summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2023-06-14 00:50:08 (GMT)
committerGitHub <noreply@github.com>2023-06-14 00:50:08 (GMT)
commit33d3069c45bda38f52053a115e3c0810cd631dd6 (patch)
treeee49a043f3960473e891ce9a1a4be3abee2a878c
parent75239d5ec1505b8f9f20d3c2d366c1a3ebd269aa (diff)
downloadcpython-33d3069c45bda38f52053a115e3c0810cd631dd6.zip
cpython-33d3069c45bda38f52053a115e3c0810cd631dd6.tar.gz
cpython-33d3069c45bda38f52053a115e3c0810cd631dd6.tar.bz2
[3.12] gh-104812: Run Pending Calls in any Thread (gh-104813) (gh-105752)
For a while now, pending calls only run in the main thread (in the main interpreter). This PR changes things to allow any thread run a pending call, unless the pending call was explicitly added for the main thread to run. (cherry picked from commit 757b402)
-rw-r--r--Doc/data/python3.12.abi1089
-rw-r--r--Include/cpython/ceval.h2
-rw-r--r--Include/internal/pycore_ceval.h3
-rw-r--r--Include/internal/pycore_ceval_state.h38
-rw-r--r--Include/internal/pycore_pystate.h8
-rw-r--r--Lib/test/support/threading_helper.py9
-rw-r--r--Lib/test/test_capi/test_misc.py403
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-06-02-15-15-41.gh-issue-104812.dfZiG5.rst9
-rw-r--r--Modules/_queuemodule.c3
-rw-r--r--Modules/_testinternalcapi.c121
-rw-r--r--Modules/_threadmodule.c3
-rw-r--r--Modules/signalmodule.c6
-rw-r--r--Python/ceval.c55
-rw-r--r--Python/ceval_gil.c213
-rw-r--r--Python/pylifecycle.c3
-rw-r--r--Python/pystate.c3
-rw-r--r--Tools/c-analyzer/cpython/ignored.tsv1
17 files changed, 1311 insertions, 658 deletions
diff --git a/Doc/data/python3.12.abi b/Doc/data/python3.12.abi
index 0615923..b58ee37 100644
--- a/Doc/data/python3.12.abi
+++ b/Doc/data/python3.12.abi
@@ -1079,6 +1079,7 @@
<elf-symbol name='_PyEval_GetBuiltin' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyEval_GetBuiltinId' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyEval_GetSwitchInterval' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+ <elf-symbol name='_PyEval_MakePendingCalls' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyEval_SetProfile' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyEval_SetSwitchInterval' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyEval_SetTrace' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
@@ -1702,7 +1703,7 @@
<elf-symbol name='_PyNotImplemented_Type' size='416' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyOS_ReadlineTState' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyParser_TokenNames' size='552' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
- <elf-symbol name='_PyRuntime' size='459568' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+ <elf-symbol name='_PyRuntime' size='460112' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PySet_Dummy' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyWeakref_CallableProxyType' size='416' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='_PyWeakref_ProxyType' size='416' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
@@ -2512,22 +2513,22 @@
<pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-176'/>
<class-decl name='__dirstream' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-65'/>
<class-decl name='__spawn_action' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-66'/>
- <function-decl name='_PyEval_ReInitThreads' filepath='./Include/internal/pycore_ceval.h' line='33' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_ReInitThreads' filepath='./Include/internal/pycore_ceval.h' line='34' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='_PyPerfTrampoline_AfterFork_Child' filepath='./Include/internal/pycore_ceval.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyPerfTrampoline_AfterFork_Child' filepath='./Include/internal/pycore_ceval.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-54'/>
</function-decl>
<function-decl name='_PyImport_ReInitLock' filepath='./Include/internal/pycore_import.h' line='157' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-20'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='_PyInterpreterState_DeleteExceptMain' filepath='./Include/internal/pycore_pystate.h' line='154' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyInterpreterState_DeleteExceptMain' filepath='./Include/internal/pycore_pystate.h' line='146' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-178'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='_PySignal_AfterFork' filepath='./Include/internal/pycore_pystate.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PySignal_AfterFork' filepath='./Include/internal/pycore_pystate.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-46'/>
</function-decl>
<function-decl name='_PyRuntimeState_ReInitThreads' filepath='./Include/internal/pycore_runtime.h' line='186' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -3442,23 +3443,23 @@
<pointer-type-def type-id='type-id-197' size-in-bits='64' id='type-id-203'/>
<qualified-type-def type-id='type-id-203' restrict='yes' id='type-id-204'/>
<qualified-type-def type-id='type-id-189' restrict='yes' id='type-id-205'/>
- <function-decl name='_PyErr_CheckSignals' mangled-name='_PyErr_CheckSignals' filepath='./Modules/signalmodule.c' line='1872' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyErr_CheckSignals'>
+ <function-decl name='_PyErr_CheckSignals' mangled-name='_PyErr_CheckSignals' filepath='./Modules/signalmodule.c' line='1874' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyErr_CheckSignals'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyErr_SetInterruptEx' mangled-name='PyErr_SetInterruptEx' filepath='./Modules/signalmodule.c' line='1884' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_SetInterruptEx'>
- <parameter type-id='type-id-8' name='signum' filepath='./Modules/signalmodule.c' line='1884' column='1'/>
+ <function-decl name='PyErr_SetInterruptEx' mangled-name='PyErr_SetInterruptEx' filepath='./Modules/signalmodule.c' line='1886' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_SetInterruptEx'>
+ <parameter type-id='type-id-8' name='signum' filepath='./Modules/signalmodule.c' line='1886' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyErr_SetInterrupt' mangled-name='PyErr_SetInterrupt' filepath='./Modules/signalmodule.c' line='1900' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_SetInterrupt'>
+ <function-decl name='PyErr_SetInterrupt' mangled-name='PyErr_SetInterrupt' filepath='./Modules/signalmodule.c' line='1902' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_SetInterrupt'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_Py_RestoreSignals' mangled-name='_Py_RestoreSignals' filepath='./Modules/signalmodule.c' line='1938' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_RestoreSignals'>
+ <function-decl name='_Py_RestoreSignals' mangled-name='_Py_RestoreSignals' filepath='./Modules/signalmodule.c' line='1940' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_RestoreSignals'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyOS_InterruptOccurred' mangled-name='PyOS_InterruptOccurred' filepath='./Modules/signalmodule.c' line='2010' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_InterruptOccurred'>
+ <function-decl name='PyOS_InterruptOccurred' mangled-name='PyOS_InterruptOccurred' filepath='./Modules/signalmodule.c' line='2012' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_InterruptOccurred'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyOS_IsMainThread' mangled-name='_PyOS_IsMainThread' filepath='./Modules/signalmodule.c' line='2043' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyOS_IsMainThread'>
+ <function-decl name='_PyOS_IsMainThread' mangled-name='_PyOS_IsMainThread' filepath='./Modules/signalmodule.c' line='2045' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyOS_IsMainThread'>
<return type-id='type-id-8'/>
</function-decl>
<function-decl name='sigismember' filepath='/usr/include/signal.h' line='211' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -3635,37 +3636,37 @@
</function-type>
</abi-instr>
<abi-instr address-size='64' path='./Python/sysmodule.c' comp-dir-path='/home/runner/work/cpython/cpython' language='LANG_C11'>
- <function-decl name='_PyEval_CallTracing' filepath='./Include/internal/pycore_ceval.h' line='37' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_CallTracing' filepath='./Include/internal/pycore_ceval.h' line='38' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-2'/>
<parameter type-id='type-id-2'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyEval_GetAsyncGenFirstiter' filepath='./Include/internal/pycore_ceval.h' line='40' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_GetAsyncGenFirstiter' filepath='./Include/internal/pycore_ceval.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyEval_GetAsyncGenFinalizer' filepath='./Include/internal/pycore_ceval.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_GetAsyncGenFinalizer' filepath='./Include/internal/pycore_ceval.h' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyEval_SetAsyncGenFirstiter' filepath='./Include/internal/pycore_ceval.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_SetAsyncGenFirstiter' filepath='./Include/internal/pycore_ceval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-2'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_SetAsyncGenFinalizer' filepath='./Include/internal/pycore_ceval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_SetAsyncGenFinalizer' filepath='./Include/internal/pycore_ceval.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-2'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_GetCoroutineOriginTrackingDepth' filepath='./Include/internal/pycore_ceval.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_GetCoroutineOriginTrackingDepth' filepath='./Include/internal/pycore_ceval.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_SetCoroutineOriginTrackingDepth' filepath='./Include/internal/pycore_ceval.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_SetCoroutineOriginTrackingDepth' filepath='./Include/internal/pycore_ceval.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-8'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyPerfTrampoline_GetCallbacks' filepath='./Include/internal/pycore_ceval.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyPerfTrampoline_GetCallbacks' filepath='./Include/internal/pycore_ceval.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-231'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyIsPerfTrampolineActive' filepath='./Include/internal/pycore_ceval.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyIsPerfTrampolineActive' filepath='./Include/internal/pycore_ceval.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-8'/>
</function-decl>
<function-decl name='_PyImport_GetDLOpenFlags' filepath='./Include/internal/pycore_import.h' line='115' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -3737,38 +3738,38 @@
<function-decl name='PySys_HasWarnOptions' mangled-name='PySys_HasWarnOptions' filepath='./Python/sysmodule.c' line='2671' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_HasWarnOptions'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PySys_AddXOption' mangled-name='PySys_AddXOption' filepath='./Python/sysmodule.c' line='2744' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_AddXOption'>
- <parameter type-id='type-id-16' name='s' filepath='./Python/sysmodule.c' line='2744' column='1'/>
+ <function-decl name='PySys_AddXOption' mangled-name='PySys_AddXOption' filepath='./Python/sysmodule.c' line='2750' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_AddXOption'>
+ <parameter type-id='type-id-16' name='s' filepath='./Python/sysmodule.c' line='2750' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PySys_GetXOptions' mangled-name='PySys_GetXOptions' filepath='./Python/sysmodule.c' line='2758' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_GetXOptions'>
+ <function-decl name='PySys_GetXOptions' mangled-name='PySys_GetXOptions' filepath='./Python/sysmodule.c' line='2764' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_GetXOptions'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_Py_CreateMonitoringObject' filepath='./Python/sysmodule.c' line='3525' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_Py_CreateMonitoringObject' filepath='./Python/sysmodule.c' line='3537' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PySys_SetPath' mangled-name='PySys_SetPath' filepath='./Python/sysmodule.c' line='3647' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetPath'>
- <parameter type-id='type-id-16' name='path' filepath='./Python/sysmodule.c' line='3647' column='1'/>
+ <function-decl name='PySys_SetPath' mangled-name='PySys_SetPath' filepath='./Python/sysmodule.c' line='3659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetPath'>
+ <parameter type-id='type-id-16' name='path' filepath='./Python/sysmodule.c' line='3659' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PySys_SetArgvEx' mangled-name='PySys_SetArgvEx' filepath='./Python/sysmodule.c' line='3679' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetArgvEx'>
- <parameter type-id='type-id-8' name='argc' filepath='./Python/sysmodule.c' line='3679' column='1'/>
- <parameter type-id='type-id-235' name='argv' filepath='./Python/sysmodule.c' line='3679' column='1'/>
- <parameter type-id='type-id-8' name='updatepath' filepath='./Python/sysmodule.c' line='3679' column='1'/>
+ <function-decl name='PySys_SetArgvEx' mangled-name='PySys_SetArgvEx' filepath='./Python/sysmodule.c' line='3691' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetArgvEx'>
+ <parameter type-id='type-id-8' name='argc' filepath='./Python/sysmodule.c' line='3691' column='1'/>
+ <parameter type-id='type-id-235' name='argv' filepath='./Python/sysmodule.c' line='3691' column='1'/>
+ <parameter type-id='type-id-8' name='updatepath' filepath='./Python/sysmodule.c' line='3691' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PySys_SetArgv' mangled-name='PySys_SetArgv' filepath='./Python/sysmodule.c' line='3723' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetArgv'>
- <parameter type-id='type-id-8' name='argc' filepath='./Python/sysmodule.c' line='3723' column='1'/>
- <parameter type-id='type-id-235' name='argv' filepath='./Python/sysmodule.c' line='3723' column='1'/>
+ <function-decl name='PySys_SetArgv' mangled-name='PySys_SetArgv' filepath='./Python/sysmodule.c' line='3735' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_SetArgv'>
+ <parameter type-id='type-id-8' name='argc' filepath='./Python/sysmodule.c' line='3735' column='1'/>
+ <parameter type-id='type-id-235' name='argv' filepath='./Python/sysmodule.c' line='3735' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PySys_WriteStdout' mangled-name='PySys_WriteStdout' filepath='./Python/sysmodule.c' line='3818' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_WriteStdout'>
- <parameter type-id='type-id-12' name='format' filepath='./Python/sysmodule.c' line='3818' column='1'/>
+ <function-decl name='PySys_WriteStdout' mangled-name='PySys_WriteStdout' filepath='./Python/sysmodule.c' line='3830' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_WriteStdout'>
+ <parameter type-id='type-id-12' name='format' filepath='./Python/sysmodule.c' line='3830' column='1'/>
<parameter is-variadic='yes'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PySys_FormatStdout' mangled-name='PySys_FormatStdout' filepath='./Python/sysmodule.c' line='3860' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_FormatStdout'>
- <parameter type-id='type-id-12' name='format' filepath='./Python/sysmodule.c' line='3860' column='1'/>
+ <function-decl name='PySys_FormatStdout' mangled-name='PySys_FormatStdout' filepath='./Python/sysmodule.c' line='3872' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PySys_FormatStdout'>
+ <parameter type-id='type-id-12' name='format' filepath='./Python/sysmodule.c' line='3872' column='1'/>
<parameter is-variadic='yes'/>
<return type-id='type-id-46'/>
</function-decl>
@@ -4024,7 +4025,7 @@
<parameter type-id='type-id-2'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_Py_CheckRecursiveCall' mangled-name='_Py_CheckRecursiveCall' filepath='./Include/internal/pycore_ceval.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_CheckRecursiveCall'>
+ <function-decl name='_Py_CheckRecursiveCall' mangled-name='_Py_CheckRecursiveCall' filepath='./Include/internal/pycore_ceval.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_CheckRecursiveCall'>
<parameter type-id='type-id-177'/>
<parameter type-id='type-id-12'/>
<return type-id='type-id-8'/>
@@ -5091,7 +5092,7 @@
<array-type-def dimensions='1' type-id='type-id-50' size-in-bits='infinite' id='type-id-299'>
<subrange length='infinite' id='type-id-225'/>
</array-type-def>
- <function-decl name='_PyEval_SliceIndex' mangled-name='_PyEval_SliceIndex' filepath='./Include/cpython/ceval.h' line='32' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SliceIndex'>
+ <function-decl name='_PyEval_SliceIndex' mangled-name='_PyEval_SliceIndex' filepath='./Include/cpython/ceval.h' line='34' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SliceIndex'>
<parameter type-id='type-id-2'/>
<parameter type-id='type-id-13'/>
<return type-id='type-id-8'/>
@@ -5373,7 +5374,7 @@
<parameter type-id='type-id-233'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_Vector' filepath='./Include/internal/pycore_ceval.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_Vector' filepath='./Include/internal/pycore_ceval.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<parameter type-id='type-id-310'/>
<parameter type-id='type-id-2'/>
@@ -7217,7 +7218,7 @@
<parameter type-id='type-id-2'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_GetBuiltins' filepath='./Include/internal/pycore_ceval.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_GetBuiltins' filepath='./Include/internal/pycore_ceval.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-2'/>
</function-decl>
@@ -7317,7 +7318,7 @@
<parameter type-id='type-id-2'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyEval_BuiltinsFromGlobals' filepath='./Include/internal/pycore_ceval.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_BuiltinsFromGlobals' filepath='./Include/internal/pycore_ceval.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<parameter type-id='type-id-2'/>
<return type-id='type-id-2'/>
@@ -7493,7 +7494,7 @@
<parameter type-id='type-id-2'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_GetFrame' filepath='./Include/internal/pycore_ceval.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_GetFrame' filepath='./Include/internal/pycore_ceval.h' line='151' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-375'/>
</function-decl>
<function-decl name='_PyFrame_Copy' filepath='./Include/internal/pycore_frame.h' line='110' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -7644,7 +7645,7 @@
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='Objects/listobject.c' comp-dir-path='/home/runner/work/cpython/cpython' language='LANG_C11'>
- <function-decl name='_PyEval_SliceIndexNotNone' mangled-name='_PyEval_SliceIndexNotNone' filepath='./Include/cpython/ceval.h' line='33' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SliceIndexNotNone'>
+ <function-decl name='_PyEval_SliceIndexNotNone' mangled-name='_PyEval_SliceIndexNotNone' filepath='./Include/cpython/ceval.h' line='35' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SliceIndexNotNone'>
<parameter type-id='type-id-2'/>
<parameter type-id='type-id-13'/>
<return type-id='type-id-8'/>
@@ -8230,8 +8231,8 @@
<parameter type-id='type-id-20'/>
<return type-id='type-id-8'/>
</function-decl>
- <var-decl name='_Py_NoneStruct' type-id='type-id-345' mangled-name='_Py_NoneStruct' visibility='default' filepath='./Include/object.h' line='820' column='1' elf-symbol-id='_Py_NoneStruct'/>
- <var-decl name='_Py_NotImplementedStruct' type-id='type-id-345' mangled-name='_Py_NotImplementedStruct' visibility='default' filepath='./Include/object.h' line='834' column='1' elf-symbol-id='_Py_NotImplementedStruct'/>
+ <var-decl name='_Py_NoneStruct' type-id='type-id-345' mangled-name='_Py_NoneStruct' visibility='default' filepath='./Include/object.h' line='832' column='1' elf-symbol-id='_Py_NoneStruct'/>
+ <var-decl name='_Py_NotImplementedStruct' type-id='type-id-345' mangled-name='_Py_NotImplementedStruct' visibility='default' filepath='./Include/object.h' line='846' column='1' elf-symbol-id='_Py_NotImplementedStruct'/>
<function-decl name='PyThreadState_GetDict' mangled-name='PyThreadState_GetDict' filepath='./Include/pystate.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_GetDict'>
<return type-id='type-id-2'/>
</function-decl>
@@ -9502,185 +9503,185 @@
<parameter type-id='type-id-2' name='string' filepath='Objects/unicodeobject.c' line='7883' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyUnicode_EncodeCharmap' mangled-name='_PyUnicode_EncodeCharmap' filepath='Objects/unicodeobject.c' line='8290' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_EncodeCharmap'>
- <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='8290' column='1'/>
- <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8291' column='1'/>
- <parameter type-id='type-id-12' name='errors' filepath='Objects/unicodeobject.c' line='8292' column='1'/>
+ <function-decl name='_PyUnicode_EncodeCharmap' mangled-name='_PyUnicode_EncodeCharmap' filepath='Objects/unicodeobject.c' line='8295' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_EncodeCharmap'>
+ <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='8295' column='1'/>
+ <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8296' column='1'/>
+ <parameter type-id='type-id-12' name='errors' filepath='Objects/unicodeobject.c' line='8297' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_AsCharmapString' mangled-name='PyUnicode_AsCharmapString' filepath='Objects/unicodeobject.c' line='8359' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_AsCharmapString'>
- <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='8359' column='1'/>
- <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8360' column='1'/>
+ <function-decl name='PyUnicode_AsCharmapString' mangled-name='PyUnicode_AsCharmapString' filepath='Objects/unicodeobject.c' line='8364' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_AsCharmapString'>
+ <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='8364' column='1'/>
+ <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8365' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Translate' mangled-name='PyUnicode_Translate' filepath='Objects/unicodeobject.c' line='8775' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Translate'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='8775' column='1'/>
- <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8776' column='1'/>
- <parameter type-id='type-id-12' name='errors' filepath='Objects/unicodeobject.c' line='8777' column='1'/>
+ <function-decl name='PyUnicode_Translate' mangled-name='PyUnicode_Translate' filepath='Objects/unicodeobject.c' line='8780' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Translate'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='8780' column='1'/>
+ <parameter type-id='type-id-2' name='mapping' filepath='Objects/unicodeobject.c' line='8781' column='1'/>
+ <parameter type-id='type-id-12' name='errors' filepath='Objects/unicodeobject.c' line='8782' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyUnicode_InsertThousandsGrouping' mangled-name='_PyUnicode_InsertThousandsGrouping' filepath='Objects/unicodeobject.c' line='8957' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_InsertThousandsGrouping'>
- <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='8958' column='1'/>
- <parameter type-id='type-id-14' name='n_buffer' filepath='Objects/unicodeobject.c' line='8959' column='1'/>
- <parameter type-id='type-id-2' name='digits' filepath='Objects/unicodeobject.c' line='8960' column='1'/>
- <parameter type-id='type-id-14' name='d_pos' filepath='Objects/unicodeobject.c' line='8961' column='1'/>
- <parameter type-id='type-id-14' name='n_digits' filepath='Objects/unicodeobject.c' line='8962' column='1'/>
- <parameter type-id='type-id-14' name='min_width' filepath='Objects/unicodeobject.c' line='8963' column='1'/>
- <parameter type-id='type-id-12' name='grouping' filepath='Objects/unicodeobject.c' line='8964' column='1'/>
- <parameter type-id='type-id-2' name='thousands_sep' filepath='Objects/unicodeobject.c' line='8965' column='1'/>
- <parameter type-id='type-id-440' name='maxchar' filepath='Objects/unicodeobject.c' line='8966' column='1'/>
+ <function-decl name='_PyUnicode_InsertThousandsGrouping' mangled-name='_PyUnicode_InsertThousandsGrouping' filepath='Objects/unicodeobject.c' line='8962' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_InsertThousandsGrouping'>
+ <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='8963' column='1'/>
+ <parameter type-id='type-id-14' name='n_buffer' filepath='Objects/unicodeobject.c' line='8964' column='1'/>
+ <parameter type-id='type-id-2' name='digits' filepath='Objects/unicodeobject.c' line='8965' column='1'/>
+ <parameter type-id='type-id-14' name='d_pos' filepath='Objects/unicodeobject.c' line='8966' column='1'/>
+ <parameter type-id='type-id-14' name='n_digits' filepath='Objects/unicodeobject.c' line='8967' column='1'/>
+ <parameter type-id='type-id-14' name='min_width' filepath='Objects/unicodeobject.c' line='8968' column='1'/>
+ <parameter type-id='type-id-12' name='grouping' filepath='Objects/unicodeobject.c' line='8969' column='1'/>
+ <parameter type-id='type-id-2' name='thousands_sep' filepath='Objects/unicodeobject.c' line='8970' column='1'/>
+ <parameter type-id='type-id-440' name='maxchar' filepath='Objects/unicodeobject.c' line='8971' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='PyUnicode_Count' mangled-name='PyUnicode_Count' filepath='Objects/unicodeobject.c' line='9136' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Count'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9136' column='1'/>
- <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9137' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9138' column='1'/>
- <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9139' column='1'/>
+ <function-decl name='PyUnicode_Count' mangled-name='PyUnicode_Count' filepath='Objects/unicodeobject.c' line='9141' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Count'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9141' column='1'/>
+ <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9142' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9143' column='1'/>
+ <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9144' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='PyUnicode_Find' mangled-name='PyUnicode_Find' filepath='Objects/unicodeobject.c' line='9148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Find'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9148' column='1'/>
- <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9149' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9150' column='1'/>
- <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9151' column='1'/>
- <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9152' column='1'/>
+ <function-decl name='PyUnicode_Find' mangled-name='PyUnicode_Find' filepath='Objects/unicodeobject.c' line='9153' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Find'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9153' column='1'/>
+ <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9154' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9155' column='1'/>
+ <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9156' column='1'/>
+ <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9157' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='PyUnicode_FindChar' mangled-name='PyUnicode_FindChar' filepath='Objects/unicodeobject.c' line='9161' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_FindChar'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9161' column='1'/>
- <parameter type-id='type-id-250' name='ch' filepath='Objects/unicodeobject.c' line='9161' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9162' column='1'/>
- <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9162' column='1'/>
- <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9163' column='1'/>
+ <function-decl name='PyUnicode_FindChar' mangled-name='PyUnicode_FindChar' filepath='Objects/unicodeobject.c' line='9166' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_FindChar'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9166' column='1'/>
+ <parameter type-id='type-id-250' name='ch' filepath='Objects/unicodeobject.c' line='9166' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9167' column='1'/>
+ <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9167' column='1'/>
+ <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9168' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='PyUnicode_Tailmatch' mangled-name='PyUnicode_Tailmatch' filepath='Objects/unicodeobject.c' line='9244' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Tailmatch'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9244' column='1'/>
- <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9245' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9246' column='1'/>
- <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9247' column='1'/>
- <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9248' column='1'/>
+ <function-decl name='PyUnicode_Tailmatch' mangled-name='PyUnicode_Tailmatch' filepath='Objects/unicodeobject.c' line='9249' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Tailmatch'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='9249' column='1'/>
+ <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='9250' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9251' column='1'/>
+ <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='9252' column='1'/>
+ <parameter type-id='type-id-8' name='direction' filepath='Objects/unicodeobject.c' line='9253' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='_PyUnicode_JoinArray' mangled-name='_PyUnicode_JoinArray' filepath='Objects/unicodeobject.c' line='9513' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_JoinArray'>
- <parameter type-id='type-id-2' name='separator' filepath='Objects/unicodeobject.c' line='9513' column='1'/>
- <parameter type-id='type-id-248' name='items' filepath='Objects/unicodeobject.c' line='9513' column='1'/>
- <parameter type-id='type-id-14' name='seqlen' filepath='Objects/unicodeobject.c' line='9513' column='1'/>
+ <function-decl name='_PyUnicode_JoinArray' mangled-name='_PyUnicode_JoinArray' filepath='Objects/unicodeobject.c' line='9518' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_JoinArray'>
+ <parameter type-id='type-id-2' name='separator' filepath='Objects/unicodeobject.c' line='9518' column='1'/>
+ <parameter type-id='type-id-248' name='items' filepath='Objects/unicodeobject.c' line='9518' column='1'/>
+ <parameter type-id='type-id-14' name='seqlen' filepath='Objects/unicodeobject.c' line='9518' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyUnicode_FastFill' mangled-name='_PyUnicode_FastFill' filepath='Objects/unicodeobject.c' line='9680' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_FastFill'>
- <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='9680' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9680' column='1'/>
- <parameter type-id='type-id-14' name='length' filepath='Objects/unicodeobject.c' line='9680' column='1'/>
- <parameter type-id='type-id-250' name='fill_char' filepath='Objects/unicodeobject.c' line='9681' column='1'/>
+ <function-decl name='_PyUnicode_FastFill' mangled-name='_PyUnicode_FastFill' filepath='Objects/unicodeobject.c' line='9685' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_FastFill'>
+ <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='9685' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9685' column='1'/>
+ <parameter type-id='type-id-14' name='length' filepath='Objects/unicodeobject.c' line='9685' column='1'/>
+ <parameter type-id='type-id-250' name='fill_char' filepath='Objects/unicodeobject.c' line='9686' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyUnicode_Fill' mangled-name='PyUnicode_Fill' filepath='Objects/unicodeobject.c' line='9693' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Fill'>
- <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='9693' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9693' column='1'/>
- <parameter type-id='type-id-14' name='length' filepath='Objects/unicodeobject.c' line='9693' column='1'/>
- <parameter type-id='type-id-250' name='fill_char' filepath='Objects/unicodeobject.c' line='9694' column='1'/>
+ <function-decl name='PyUnicode_Fill' mangled-name='PyUnicode_Fill' filepath='Objects/unicodeobject.c' line='9698' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Fill'>
+ <parameter type-id='type-id-2' name='unicode' filepath='Objects/unicodeobject.c' line='9698' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='9698' column='1'/>
+ <parameter type-id='type-id-14' name='length' filepath='Objects/unicodeobject.c' line='9698' column='1'/>
+ <parameter type-id='type-id-250' name='fill_char' filepath='Objects/unicodeobject.c' line='9699' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='PyUnicode_Splitlines' mangled-name='PyUnicode_Splitlines' filepath='Objects/unicodeobject.c' line='9767' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Splitlines'>
- <parameter type-id='type-id-2' name='string' filepath='Objects/unicodeobject.c' line='9767' column='1'/>
- <parameter type-id='type-id-8' name='keepends' filepath='Objects/unicodeobject.c' line='9767' column='1'/>
+ <function-decl name='PyUnicode_Splitlines' mangled-name='PyUnicode_Splitlines' filepath='Objects/unicodeobject.c' line='9772' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Splitlines'>
+ <parameter type-id='type-id-2' name='string' filepath='Objects/unicodeobject.c' line='9772' column='1'/>
+ <parameter type-id='type-id-8' name='keepends' filepath='Objects/unicodeobject.c' line='9772' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyUnicode_EqualToASCIIId' mangled-name='_PyUnicode_EqualToASCIIId' filepath='Objects/unicodeobject.c' line='10655' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_EqualToASCIIId'>
- <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10655' column='1'/>
- <parameter type-id='type-id-309' name='right' filepath='Objects/unicodeobject.c' line='10655' column='1'/>
+ <function-decl name='_PyUnicode_EqualToASCIIId' mangled-name='_PyUnicode_EqualToASCIIId' filepath='Objects/unicodeobject.c' line='10660' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_EqualToASCIIId'>
+ <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10660' column='1'/>
+ <parameter type-id='type-id-309' name='right' filepath='Objects/unicodeobject.c' line='10660' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyUnicode_RichCompare' mangled-name='PyUnicode_RichCompare' filepath='Objects/unicodeobject.c' line='10693' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RichCompare'>
- <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10693' column='1'/>
- <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10693' column='1'/>
- <parameter type-id='type-id-8' name='op' filepath='Objects/unicodeobject.c' line='10693' column='1'/>
+ <function-decl name='PyUnicode_RichCompare' mangled-name='PyUnicode_RichCompare' filepath='Objects/unicodeobject.c' line='10698' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RichCompare'>
+ <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10698' column='1'/>
+ <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10698' column='1'/>
+ <parameter type-id='type-id-8' name='op' filepath='Objects/unicodeobject.c' line='10698' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Contains' mangled-name='PyUnicode_Contains' filepath='Objects/unicodeobject.c' line='10734' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Contains'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='10734' column='1'/>
- <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='10734' column='1'/>
+ <function-decl name='PyUnicode_Contains' mangled-name='PyUnicode_Contains' filepath='Objects/unicodeobject.c' line='10739' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Contains'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='10739' column='1'/>
+ <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='10739' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyUnicode_Concat' mangled-name='PyUnicode_Concat' filepath='Objects/unicodeobject.c' line='10795' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Concat'>
- <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10795' column='1'/>
- <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10795' column='1'/>
+ <function-decl name='PyUnicode_Concat' mangled-name='PyUnicode_Concat' filepath='Objects/unicodeobject.c' line='10800' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Concat'>
+ <parameter type-id='type-id-2' name='left' filepath='Objects/unicodeobject.c' line='10800' column='1'/>
+ <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10800' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Append' mangled-name='PyUnicode_Append' filepath='Objects/unicodeobject.c' line='10844' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Append'>
- <parameter type-id='type-id-233' name='p_left' filepath='Objects/unicodeobject.c' line='10844' column='1'/>
- <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10844' column='1'/>
+ <function-decl name='PyUnicode_Append' mangled-name='PyUnicode_Append' filepath='Objects/unicodeobject.c' line='10849' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Append'>
+ <parameter type-id='type-id-233' name='p_left' filepath='Objects/unicodeobject.c' line='10849' column='1'/>
+ <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10849' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyUnicode_AppendAndDel' mangled-name='PyUnicode_AppendAndDel' filepath='Objects/unicodeobject.c' line='10921' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_AppendAndDel'>
- <parameter type-id='type-id-233' name='pleft' filepath='Objects/unicodeobject.c' line='10921' column='1'/>
- <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10921' column='1'/>
+ <function-decl name='PyUnicode_AppendAndDel' mangled-name='PyUnicode_AppendAndDel' filepath='Objects/unicodeobject.c' line='10926' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_AppendAndDel'>
+ <parameter type-id='type-id-233' name='pleft' filepath='Objects/unicodeobject.c' line='10926' column='1'/>
+ <parameter type-id='type-id-2' name='right' filepath='Objects/unicodeobject.c' line='10926' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyUnicode_XStrip' mangled-name='_PyUnicode_XStrip' filepath='Objects/unicodeobject.c' line='11733' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_XStrip'>
- <parameter type-id='type-id-2' name='self' filepath='Objects/unicodeobject.c' line='11733' column='1'/>
- <parameter type-id='type-id-8' name='striptype' filepath='Objects/unicodeobject.c' line='11733' column='1'/>
- <parameter type-id='type-id-2' name='sepobj' filepath='Objects/unicodeobject.c' line='11733' column='1'/>
+ <function-decl name='_PyUnicode_XStrip' mangled-name='_PyUnicode_XStrip' filepath='Objects/unicodeobject.c' line='11738' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicode_XStrip'>
+ <parameter type-id='type-id-2' name='self' filepath='Objects/unicodeobject.c' line='11738' column='1'/>
+ <parameter type-id='type-id-8' name='striptype' filepath='Objects/unicodeobject.c' line='11738' column='1'/>
+ <parameter type-id='type-id-2' name='sepobj' filepath='Objects/unicodeobject.c' line='11738' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Replace' mangled-name='PyUnicode_Replace' filepath='Objects/unicodeobject.c' line='12006' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Replace'>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='12006' column='1'/>
- <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='12007' column='1'/>
- <parameter type-id='type-id-2' name='replstr' filepath='Objects/unicodeobject.c' line='12008' column='1'/>
- <parameter type-id='type-id-14' name='maxcount' filepath='Objects/unicodeobject.c' line='12009' column='1'/>
+ <function-decl name='PyUnicode_Replace' mangled-name='PyUnicode_Replace' filepath='Objects/unicodeobject.c' line='12011' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Replace'>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='12011' column='1'/>
+ <parameter type-id='type-id-2' name='substr' filepath='Objects/unicodeobject.c' line='12012' column='1'/>
+ <parameter type-id='type-id-2' name='replstr' filepath='Objects/unicodeobject.c' line='12013' column='1'/>
+ <parameter type-id='type-id-14' name='maxcount' filepath='Objects/unicodeobject.c' line='12014' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Split' mangled-name='PyUnicode_Split' filepath='Objects/unicodeobject.c' line='12344' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Split'>
- <parameter type-id='type-id-2' name='s' filepath='Objects/unicodeobject.c' line='12344' column='1'/>
- <parameter type-id='type-id-2' name='sep' filepath='Objects/unicodeobject.c' line='12344' column='1'/>
- <parameter type-id='type-id-14' name='maxsplit' filepath='Objects/unicodeobject.c' line='12344' column='1'/>
+ <function-decl name='PyUnicode_Split' mangled-name='PyUnicode_Split' filepath='Objects/unicodeobject.c' line='12349' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Split'>
+ <parameter type-id='type-id-2' name='s' filepath='Objects/unicodeobject.c' line='12349' column='1'/>
+ <parameter type-id='type-id-2' name='sep' filepath='Objects/unicodeobject.c' line='12349' column='1'/>
+ <parameter type-id='type-id-14' name='maxsplit' filepath='Objects/unicodeobject.c' line='12349' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_Partition' mangled-name='PyUnicode_Partition' filepath='Objects/unicodeobject.c' line='12389' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Partition'>
- <parameter type-id='type-id-2' name='str_obj' filepath='Objects/unicodeobject.c' line='12389' column='1'/>
- <parameter type-id='type-id-2' name='sep_obj' filepath='Objects/unicodeobject.c' line='12389' column='1'/>
+ <function-decl name='PyUnicode_Partition' mangled-name='PyUnicode_Partition' filepath='Objects/unicodeobject.c' line='12394' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Partition'>
+ <parameter type-id='type-id-2' name='str_obj' filepath='Objects/unicodeobject.c' line='12394' column='1'/>
+ <parameter type-id='type-id-2' name='sep_obj' filepath='Objects/unicodeobject.c' line='12394' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_RPartition' mangled-name='PyUnicode_RPartition' filepath='Objects/unicodeobject.c' line='12441' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RPartition'>
- <parameter type-id='type-id-2' name='str_obj' filepath='Objects/unicodeobject.c' line='12441' column='1'/>
- <parameter type-id='type-id-2' name='sep_obj' filepath='Objects/unicodeobject.c' line='12441' column='1'/>
+ <function-decl name='PyUnicode_RPartition' mangled-name='PyUnicode_RPartition' filepath='Objects/unicodeobject.c' line='12446' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RPartition'>
+ <parameter type-id='type-id-2' name='str_obj' filepath='Objects/unicodeobject.c' line='12446' column='1'/>
+ <parameter type-id='type-id-2' name='sep_obj' filepath='Objects/unicodeobject.c' line='12446' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_RSplit' mangled-name='PyUnicode_RSplit' filepath='Objects/unicodeobject.c' line='12535' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RSplit'>
- <parameter type-id='type-id-2' name='s' filepath='Objects/unicodeobject.c' line='12535' column='1'/>
- <parameter type-id='type-id-2' name='sep' filepath='Objects/unicodeobject.c' line='12535' column='1'/>
- <parameter type-id='type-id-14' name='maxsplit' filepath='Objects/unicodeobject.c' line='12535' column='1'/>
+ <function-decl name='PyUnicode_RSplit' mangled-name='PyUnicode_RSplit' filepath='Objects/unicodeobject.c' line='12540' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_RSplit'>
+ <parameter type-id='type-id-2' name='s' filepath='Objects/unicodeobject.c' line='12540' column='1'/>
+ <parameter type-id='type-id-2' name='sep' filepath='Objects/unicodeobject.c' line='12540' column='1'/>
+ <parameter type-id='type-id-14' name='maxsplit' filepath='Objects/unicodeobject.c' line='12540' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyUnicodeWriter_PrepareKindInternal' mangled-name='_PyUnicodeWriter_PrepareKindInternal' filepath='Objects/unicodeobject.c' line='13046' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_PrepareKindInternal'>
- <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13046' column='1'/>
- <parameter type-id='type-id-8' name='kind' filepath='Objects/unicodeobject.c' line='13047' column='1'/>
+ <function-decl name='_PyUnicodeWriter_PrepareKindInternal' mangled-name='_PyUnicodeWriter_PrepareKindInternal' filepath='Objects/unicodeobject.c' line='13051' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_PrepareKindInternal'>
+ <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13051' column='1'/>
+ <parameter type-id='type-id-8' name='kind' filepath='Objects/unicodeobject.c' line='13052' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyUnicodeWriter_WriteSubstring' mangled-name='_PyUnicodeWriter_WriteSubstring' filepath='Objects/unicodeobject.c' line='13112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_WriteSubstring'>
- <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13112' column='1'/>
- <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='13112' column='1'/>
- <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='13113' column='1'/>
- <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='13113' column='1'/>
+ <function-decl name='_PyUnicodeWriter_WriteSubstring' mangled-name='_PyUnicodeWriter_WriteSubstring' filepath='Objects/unicodeobject.c' line='13117' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_WriteSubstring'>
+ <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13117' column='1'/>
+ <parameter type-id='type-id-2' name='str' filepath='Objects/unicodeobject.c' line='13117' column='1'/>
+ <parameter type-id='type-id-14' name='start' filepath='Objects/unicodeobject.c' line='13118' column='1'/>
+ <parameter type-id='type-id-14' name='end' filepath='Objects/unicodeobject.c' line='13118' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyUnicodeWriter_WriteLatin1String' mangled-name='_PyUnicodeWriter_WriteLatin1String' filepath='Objects/unicodeobject.c' line='13204' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_WriteLatin1String'>
- <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13204' column='1'/>
- <parameter type-id='type-id-12' name='str' filepath='Objects/unicodeobject.c' line='13205' column='1'/>
- <parameter type-id='type-id-14' name='len' filepath='Objects/unicodeobject.c' line='13205' column='1'/>
+ <function-decl name='_PyUnicodeWriter_WriteLatin1String' mangled-name='_PyUnicodeWriter_WriteLatin1String' filepath='Objects/unicodeobject.c' line='13209' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyUnicodeWriter_WriteLatin1String'>
+ <parameter type-id='type-id-332' name='writer' filepath='Objects/unicodeobject.c' line='13209' column='1'/>
+ <parameter type-id='type-id-12' name='str' filepath='Objects/unicodeobject.c' line='13210' column='1'/>
+ <parameter type-id='type-id-14' name='len' filepath='Objects/unicodeobject.c' line='13210' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyUnicode_Format' mangled-name='PyUnicode_Format' filepath='Objects/unicodeobject.c' line='14354' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Format'>
- <parameter type-id='type-id-2' name='format' filepath='Objects/unicodeobject.c' line='14354' column='1'/>
- <parameter type-id='type-id-2' name='args' filepath='Objects/unicodeobject.c' line='14354' column='1'/>
+ <function-decl name='PyUnicode_Format' mangled-name='PyUnicode_Format' filepath='Objects/unicodeobject.c' line='14359' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_Format'>
+ <parameter type-id='type-id-2' name='format' filepath='Objects/unicodeobject.c' line='14359' column='1'/>
+ <parameter type-id='type-id-2' name='args' filepath='Objects/unicodeobject.c' line='14359' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyUnicode_InternImmortal' mangled-name='PyUnicode_InternImmortal' filepath='Objects/unicodeobject.c' line='14764' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_InternImmortal'>
- <parameter type-id='type-id-233' name='p' filepath='Objects/unicodeobject.c' line='14764' column='1'/>
+ <function-decl name='PyUnicode_InternImmortal' mangled-name='PyUnicode_InternImmortal' filepath='Objects/unicodeobject.c' line='14769' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnicode_InternImmortal'>
+ <parameter type-id='type-id-233' name='p' filepath='Objects/unicodeobject.c' line='14769' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyInit__string' mangled-name='PyInit__string' filepath='Objects/unicodeobject.c' line='15318' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInit__string'>
+ <function-decl name='PyInit__string' mangled-name='PyInit__string' filepath='Objects/unicodeobject.c' line='15323' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInit__string'>
<return type-id='type-id-2'/>
</function-decl>
</abi-instr>
@@ -11112,7 +11113,7 @@
<var-decl name='op' type-id='type-id-708' visibility='default' filepath='./Include/cpython/code.h' line='36' column='1'/>
</data-member>
</union-decl>
- <class-decl name='__anonymous_struct__748' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/code.h' line='33' column='1' id='type-id-708'>
+ <class-decl name='__anonymous_struct__747' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/code.h' line='33' column='1' id='type-id-708'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='code' type-id='type-id-325' visibility='default' filepath='./Include/cpython/code.h' line='34' column='1'/>
</data-member>
@@ -11913,7 +11914,7 @@
<var-decl name='root_cframe' type-id='type-id-767' visibility='default' filepath='./Include/cpython/pystate.h' line='248' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__750' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/pystate.h' line='122' column='1' id='type-id-775'>
+ <class-decl name='__anonymous_struct__749' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/pystate.h' line='122' column='1' id='type-id-775'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='initialized' type-id='type-id-95' visibility='default' filepath='./Include/cpython/pystate.h' line='127' column='1'/>
</data-member>
@@ -11994,7 +11995,7 @@
<var-decl name='state' type-id='type-id-794' visibility='default' filepath='./Include/cpython/unicodeobject.h' line='146' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__27' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/unicodeobject.h' line='100' column='1' id='type-id-794'>
+ <class-decl name='__anonymous_struct__26' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/cpython/unicodeobject.h' line='100' column='1' id='type-id-794'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='interned' type-id='type-id-95' visibility='default' filepath='./Include/cpython/unicodeobject.h' line='110' column='1'/>
</data-member>
@@ -12815,104 +12816,107 @@
<typedef-decl name='_Py_atomic_address' type-id='type-id-807' filepath='./Include/internal/pycore_atomic.h' line='47' column='1' id='type-id-808'/>
<class-decl name='_Py_atomic_int' size-in-bits='32' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_atomic.h' line='49' column='1' id='type-id-809'/>
<typedef-decl name='_Py_atomic_int' type-id='type-id-809' filepath='./Include/internal/pycore_atomic.h' line='51' column='1' id='type-id-810'/>
- <enum-decl name='perf_status_t' naming-typedef-id='type-id-811' filepath='./Include/internal/pycore_ceval_state.h' line='16' column='1' id='type-id-812'>
- <underlying-type type-id='type-id-24'/>
- <enumerator name='PERF_STATUS_FAILED' value='-1'/>
- <enumerator name='PERF_STATUS_NO_INIT' value='0'/>
- <enumerator name='PERF_STATUS_OK' value='1'/>
- </enum-decl>
- <typedef-decl name='perf_status_t' type-id='type-id-812' filepath='./Include/internal/pycore_ceval_state.h' line='20' column='1' id='type-id-811'/>
- <class-decl name='trampoline_api_st' size-in-bits='256' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='26' column='1' id='type-id-813'>
+ <class-decl name='_pending_calls' size-in-bits='4352' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='16' column='1' id='type-id-811'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='init_state' type-id='type-id-814' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='27' column='1'/>
+ <var-decl name='busy' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='17' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='write_state' type-id='type-id-815' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='28' column='1'/>
+ <var-decl name='lock' type-id='type-id-799' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='18' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='free_state' type-id='type-id-816' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='30' column='1'/>
+ <var-decl name='calls_to_do' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='20' column='1'/>
+ </data-member>
+ <data-member access='public' layout-offset-in-bits='160'>
+ <var-decl name='async_exc' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='24' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
- <var-decl name='state' type-id='type-id-22' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='31' column='1'/>
+ <var-decl name='calls' type-id='type-id-601' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='29' column='1'/>
+ </data-member>
+ <data-member access='public' layout-offset-in-bits='4288'>
+ <var-decl name='first' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='30' column='1'/>
+ </data-member>
+ <data-member access='public' layout-offset-in-bits='4320'>
+ <var-decl name='last' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='31' column='1'/>
</data-member>
</class-decl>
- <class-decl name='_ceval_runtime_state' size-in-bits='576' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='35' column='1' id='type-id-817'>
+ <class-decl name='_pending_call' size-in-bits='128' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='26' column='1' id='type-id-600'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='perf' type-id='type-id-818' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='46' column='1'/>
+ <var-decl name='func' type-id='type-id-812' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='27' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='512'>
- <var-decl name='signals_pending' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='51' column='1'/>
+ <data-member access='public' layout-offset-in-bits='64'>
+ <var-decl name='arg' type-id='type-id-22' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='28' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__9' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='36' column='1' id='type-id-818'>
+ <enum-decl name='perf_status_t' naming-typedef-id='type-id-813' filepath='./Include/internal/pycore_ceval_state.h' line='34' column='1' id='type-id-814'>
+ <underlying-type type-id='type-id-24'/>
+ <enumerator name='PERF_STATUS_FAILED' value='-1'/>
+ <enumerator name='PERF_STATUS_NO_INIT' value='0'/>
+ <enumerator name='PERF_STATUS_OK' value='1'/>
+ </enum-decl>
+ <typedef-decl name='perf_status_t' type-id='type-id-814' filepath='./Include/internal/pycore_ceval_state.h' line='38' column='1' id='type-id-813'/>
+ <class-decl name='trampoline_api_st' size-in-bits='256' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='44' column='1' id='type-id-815'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='status' type-id='type-id-811' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='38' column='1'/>
+ <var-decl name='init_state' type-id='type-id-816' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='45' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='extra_code_index' type-id='type-id-14' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='39' column='1'/>
+ <var-decl name='write_state' type-id='type-id-817' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='46' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='code_arena' type-id='type-id-819' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='40' column='1'/>
+ <var-decl name='free_state' type-id='type-id-812' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='48' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
- <var-decl name='trampoline_api' type-id='type-id-813' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='41' column='1'/>
+ <var-decl name='state' type-id='type-id-22' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='49' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='448'>
- <var-decl name='map_file' type-id='type-id-229' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='42' column='1'/>
+ </class-decl>
+ <class-decl name='_ceval_runtime_state' size-in-bits='4928' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='53' column='1' id='type-id-818'>
+ <data-member access='public' layout-offset-in-bits='0'>
+ <var-decl name='perf' type-id='type-id-819' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='64' column='1'/>
+ </data-member>
+ <data-member access='public' layout-offset-in-bits='512'>
+ <var-decl name='signals_pending' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='69' column='1'/>
+ </data-member>
+ <data-member access='public' layout-offset-in-bits='576'>
+ <var-decl name='pending_mainthread' type-id='type-id-811' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='71' column='1'/>
</data-member>
</class-decl>
- <class-decl name='_pending_calls' size-in-bits='4352' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='65' column='1' id='type-id-820'>
+ <class-decl name='__anonymous_struct__8' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='54' column='1' id='type-id-819'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='busy' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='66' column='1'/>
+ <var-decl name='status' type-id='type-id-813' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='56' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='lock' type-id='type-id-799' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='67' column='1'/>
+ <var-decl name='extra_code_index' type-id='type-id-14' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='57' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='calls_to_do' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='69' column='1'/>
- </data-member>
- <data-member access='public' layout-offset-in-bits='160'>
- <var-decl name='async_exc' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='73' column='1'/>
+ <var-decl name='code_arena' type-id='type-id-820' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='58' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
- <var-decl name='calls' type-id='type-id-601' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='78' column='1'/>
+ <var-decl name='trampoline_api' type-id='type-id-815' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='59' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='4288'>
- <var-decl name='first' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='79' column='1'/>
- </data-member>
- <data-member access='public' layout-offset-in-bits='4320'>
- <var-decl name='last' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='80' column='1'/>
- </data-member>
- </class-decl>
- <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='75' column='1' id='type-id-600'>
- <data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='func' type-id='type-id-816' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='76' column='1'/>
- </data-member>
- <data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='arg' type-id='type-id-22' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='77' column='1'/>
+ <data-member access='public' layout-offset-in-bits='448'>
+ <var-decl name='map_file' type-id='type-id-229' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='60' column='1'/>
</data-member>
</class-decl>
- <class-decl name='_ceval_state' size-in-bits='4608' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='83' column='1' id='type-id-821'>
+ <class-decl name='_ceval_state' size-in-bits='4608' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='85' column='1' id='type-id-821'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='eval_breaker' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='86' column='1'/>
+ <var-decl name='eval_breaker' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='88' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='32'>
- <var-decl name='gil_drop_request' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='88' column='1'/>
+ <var-decl name='gil_drop_request' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='90' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='recursion_limit' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='89' column='1'/>
+ <var-decl name='recursion_limit' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='91' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='gil' type-id='type-id-822' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='90' column='1'/>
+ <var-decl name='gil' type-id='type-id-822' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='92' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
- <var-decl name='own_gil' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='91' column='1'/>
+ <var-decl name='own_gil' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='93' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='224'>
- <var-decl name='gc_scheduled' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='93' column='1'/>
+ <var-decl name='gc_scheduled' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='95' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='256'>
- <var-decl name='pending' type-id='type-id-820' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='94' column='1'/>
+ <var-decl name='pending' type-id='type-id-811' visibility='default' filepath='./Include/internal/pycore_ceval_state.h' line='96' column='1'/>
</data-member>
</class-decl>
<class-decl name='callable_cache' size-in-bits='256' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_code.h' line='105' column='1' id='type-id-823'>
@@ -13073,7 +13077,7 @@
<var-decl name='old_stack' type-id='type-id-38' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='84' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__10' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='50' column='1' id='type-id-838'>
+ <class-decl name='__anonymous_struct__9' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='50' column='1' id='type-id-838'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='enabled' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='51' column='1'/>
</data-member>
@@ -13090,7 +13094,7 @@
<var-decl name='interp' type-id='type-id-20' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='55' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__11' size-in-bits='640' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='61' column='1' id='type-id-839'>
+ <class-decl name='__anonymous_struct__10' size-in-bits='640' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='61' column='1' id='type-id-839'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='file' type-id='type-id-2' visibility='default' filepath='./Include/internal/pycore_faulthandler.h' line='62' column='1'/>
</data-member>
@@ -13351,7 +13355,7 @@
<var-decl name='singletons' type-id='type-id-859' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='54' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__22' size-in-bits='586048' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='32' column='1' id='type-id-859'>
+ <class-decl name='__anonymous_struct__21' size-in-bits='586048' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='32' column='1' id='type-id-859'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='small_ints' type-id='type-id-582' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='38' column='1'/>
</data-member>
@@ -13380,7 +13384,7 @@
<var-decl name='context_token_missing' type-id='type-id-824' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='53' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__23' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='41' column='1' id='type-id-598'>
+ <class-decl name='__anonymous_struct__22' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='41' column='1' id='type-id-598'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='ob' type-id='type-id-700' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='42' column='1'/>
</data-member>
@@ -13428,7 +13432,7 @@
<var-decl name='singletons' type-id='type-id-864' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='92' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__749' size-in-bits='1088' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='86' column='1' id='type-id-864'>
+ <class-decl name='__anonymous_struct__748' size-in-bits='1088' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='86' column='1' id='type-id-864'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_not_used' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_global_objects.h' line='87' column='1'/>
</data-member>
@@ -13456,7 +13460,7 @@
<var-decl name='latin1' type-id='type-id-597' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='759' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__24' size-in-bits='11008' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='30' column='1' id='type-id-866'>
+ <class-decl name='__anonymous_struct__23' size-in-bits='11008' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='30' column='1' id='type-id-866'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_py_anon_dictcomp' type-id='type-id-868' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='31' column='1'/>
</data-member>
@@ -13536,7 +13540,7 @@
<var-decl name='_py_utf_8' type-id='type-id-878' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='56' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__25' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='31' column='1' id='type-id-868'>
+ <class-decl name='__anonymous_struct__24' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='31' column='1' id='type-id-868'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='31' column='1'/>
</data-member>
@@ -13544,7 +13548,7 @@
<var-decl name='_data' type-id='type-id-650' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='31' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__27' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='32' column='1' id='type-id-869'>
+ <class-decl name='__anonymous_struct__26' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='32' column='1' id='type-id-869'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='32' column='1'/>
</data-member>
@@ -13552,7 +13556,7 @@
<var-decl name='_data' type-id='type-id-649' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='32' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__28' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='33' column='1' id='type-id-870'>
+ <class-decl name='__anonymous_struct__27' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='33' column='1' id='type-id-870'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='33' column='1'/>
</data-member>
@@ -13560,7 +13564,7 @@
<var-decl name='_data' type-id='type-id-694' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='33' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__34' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='39' column='1' id='type-id-594'>
+ <class-decl name='__anonymous_struct__33' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='39' column='1' id='type-id-594'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='39' column='1'/>
</data-member>
@@ -13568,7 +13572,7 @@
<var-decl name='_data' type-id='type-id-680' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='39' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__35' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='40' column='1' id='type-id-871'>
+ <class-decl name='__anonymous_struct__34' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='40' column='1' id='type-id-871'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='40' column='1'/>
</data-member>
@@ -13576,7 +13580,7 @@
<var-decl name='_data' type-id='type-id-686' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='40' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__41' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='46' column='1' id='type-id-872'>
+ <class-decl name='__anonymous_struct__40' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='46' column='1' id='type-id-872'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='46' column='1'/>
</data-member>
@@ -13584,7 +13588,7 @@
<var-decl name='_data' type-id='type-id-667' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='46' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__42' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='47' column='1' id='type-id-873'>
+ <class-decl name='__anonymous_struct__41' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='47' column='1' id='type-id-873'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='47' column='1'/>
</data-member>
@@ -13592,7 +13596,7 @@
<var-decl name='_data' type-id='type-id-656' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='47' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__43' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='48' column='1' id='type-id-874'>
+ <class-decl name='__anonymous_struct__42' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='48' column='1' id='type-id-874'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='48' column='1'/>
</data-member>
@@ -13600,7 +13604,7 @@
<var-decl name='_data' type-id='type-id-654' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='48' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__44' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='49' column='1' id='type-id-875'>
+ <class-decl name='__anonymous_struct__43' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='49' column='1' id='type-id-875'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='49' column='1'/>
</data-member>
@@ -13608,7 +13612,7 @@
<var-decl name='_data' type-id='type-id-652' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='49' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__45' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='50' column='1' id='type-id-876'>
+ <class-decl name='__anonymous_struct__44' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='50' column='1' id='type-id-876'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='50' column='1'/>
</data-member>
@@ -13616,7 +13620,7 @@
<var-decl name='_data' type-id='type-id-673' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='50' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__49' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='54' column='1' id='type-id-877'>
+ <class-decl name='__anonymous_struct__48' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='54' column='1' id='type-id-877'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='54' column='1'/>
</data-member>
@@ -13624,7 +13628,7 @@
<var-decl name='_data' type-id='type-id-691' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='54' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__51' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='56' column='1' id='type-id-878'>
+ <class-decl name='__anonymous_struct__50' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='56' column='1' id='type-id-878'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='56' column='1'/>
</data-member>
@@ -13632,7 +13636,7 @@
<var-decl name='_data' type-id='type-id-690' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='56' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__52' size-in-bits='293696' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='59' column='1' id='type-id-867'>
+ <class-decl name='__anonymous_struct__51' size-in-bits='293696' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='59' column='1' id='type-id-867'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_py_CANCELLED' type-id='type-id-869' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='60' column='1'/>
</data-member>
@@ -15707,7 +15711,7 @@
<var-decl name='_py_zdict' type-id='type-id-878' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='750' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__56' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='63' column='1' id='type-id-879'>
+ <class-decl name='__anonymous_struct__55' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='63' column='1' id='type-id-879'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='63' column='1'/>
</data-member>
@@ -15715,7 +15719,7 @@
<var-decl name='_data' type-id='type-id-660' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='63' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__57' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='64' column='1' id='type-id-880'>
+ <class-decl name='__anonymous_struct__56' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='64' column='1' id='type-id-880'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='64' column='1'/>
</data-member>
@@ -15723,7 +15727,7 @@
<var-decl name='_data' type-id='type-id-693' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='64' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__60' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='67' column='1' id='type-id-881'>
+ <class-decl name='__anonymous_struct__59' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='67' column='1' id='type-id-881'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='67' column='1'/>
</data-member>
@@ -15731,7 +15735,7 @@
<var-decl name='_data' type-id='type-id-688' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='67' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__61' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='68' column='1' id='type-id-882'>
+ <class-decl name='__anonymous_struct__60' size-in-bits='448' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='68' column='1' id='type-id-882'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='68' column='1'/>
</data-member>
@@ -15739,7 +15743,7 @@
<var-decl name='_data' type-id='type-id-658' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='68' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__63' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='70' column='1' id='type-id-883'>
+ <class-decl name='__anonymous_struct__62' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='70' column='1' id='type-id-883'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='70' column='1'/>
</data-member>
@@ -15747,7 +15751,7 @@
<var-decl name='_data' type-id='type-id-663' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='70' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__67' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='74' column='1' id='type-id-884'>
+ <class-decl name='__anonymous_struct__66' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='74' column='1' id='type-id-884'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='74' column='1'/>
</data-member>
@@ -15755,7 +15759,7 @@
<var-decl name='_data' type-id='type-id-668' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='74' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__77' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='84' column='1' id='type-id-885'>
+ <class-decl name='__anonymous_struct__76' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='84' column='1' id='type-id-885'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='84' column='1'/>
</data-member>
@@ -15763,7 +15767,7 @@
<var-decl name='_data' type-id='type-id-682' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='84' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__95' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='102' column='1' id='type-id-886'>
+ <class-decl name='__anonymous_struct__94' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='102' column='1' id='type-id-886'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='102' column='1'/>
</data-member>
@@ -15771,7 +15775,7 @@
<var-decl name='_data' type-id='type-id-675' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='102' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__116' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='123' column='1' id='type-id-887'>
+ <class-decl name='__anonymous_struct__115' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='123' column='1' id='type-id-887'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='123' column='1'/>
</data-member>
@@ -15779,7 +15783,7 @@
<var-decl name='_data' type-id='type-id-661' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='123' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__141' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='148' column='1' id='type-id-888'>
+ <class-decl name='__anonymous_struct__140' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='148' column='1' id='type-id-888'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='148' column='1'/>
</data-member>
@@ -15787,7 +15791,7 @@
<var-decl name='_data' type-id='type-id-669' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='148' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__183' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='190' column='1' id='type-id-889'>
+ <class-decl name='__anonymous_struct__182' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='190' column='1' id='type-id-889'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='190' column='1'/>
</data-member>
@@ -15795,7 +15799,7 @@
<var-decl name='_data' type-id='type-id-665' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='190' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__215' size-in-bits='640' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='222' column='1' id='type-id-890'>
+ <class-decl name='__anonymous_struct__214' size-in-bits='640' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='222' column='1' id='type-id-890'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='222' column='1'/>
</data-member>
@@ -15803,7 +15807,7 @@
<var-decl name='_data' type-id='type-id-684' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='222' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__244' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='251' column='1' id='type-id-891'>
+ <class-decl name='__anonymous_struct__243' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='251' column='1' id='type-id-891'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='251' column='1'/>
</data-member>
@@ -15811,7 +15815,7 @@
<var-decl name='_data' type-id='type-id-687' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='251' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__259' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='266' column='1' id='type-id-892'>
+ <class-decl name='__anonymous_struct__258' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='266' column='1' id='type-id-892'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='266' column='1'/>
</data-member>
@@ -15819,7 +15823,7 @@
<var-decl name='_data' type-id='type-id-677' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='266' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__308' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='315' column='1' id='type-id-893'>
+ <class-decl name='__anonymous_struct__307' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='315' column='1' id='type-id-893'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='315' column='1'/>
</data-member>
@@ -15827,7 +15831,7 @@
<var-decl name='_data' type-id='type-id-671' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='315' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__689' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='696' column='1' id='type-id-894'>
+ <class-decl name='__anonymous_struct__688' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='696' column='1' id='type-id-894'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_ascii' type-id='type-id-792' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='696' column='1'/>
</data-member>
@@ -15835,7 +15839,7 @@
<var-decl name='_data' type-id='type-id-679' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='696' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__745' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='756' column='1' id='type-id-596'>
+ <class-decl name='__anonymous_struct__744' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='756' column='1' id='type-id-596'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_latin1' type-id='type-id-795' visibility='default' filepath='./Include/internal/pycore_global_strings.h' line='757' column='1'/>
</data-member>
@@ -15960,7 +15964,7 @@
<var-decl name='pkgcontext' type-id='type-id-12' visibility='default' filepath='./Include/internal/pycore_import.h' line='33' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__8' size-in-bits='2432' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='17' column='1' id='type-id-923'>
+ <class-decl name='__anonymous_struct__7' size-in-bits='2432' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='17' column='1' id='type-id-923'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='main_tstate' type-id='type-id-924' visibility='default' filepath='./Include/internal/pycore_import.h' line='21' column='1'/>
</data-member>
@@ -16000,7 +16004,7 @@
<var-decl name='find_and_load' type-id='type-id-927' visibility='default' filepath='./Include/internal/pycore_import.h' line='80' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__746' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='70' column='1' id='type-id-926'>
+ <class-decl name='__anonymous_struct__745' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='70' column='1' id='type-id-926'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='mutex' type-id='type-id-799' visibility='default' filepath='./Include/internal/pycore_import.h' line='71' column='1'/>
</data-member>
@@ -16011,7 +16015,7 @@
<var-decl name='level' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_import.h' line='73' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__747' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='76' column='1' id='type-id-927'>
+ <class-decl name='__anonymous_struct__746' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_import.h' line='76' column='1' id='type-id-927'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='import_level' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_import.h' line='77' column='1'/>
</data-member>
@@ -16447,7 +16451,7 @@
<var-decl name='urandom_cache' type-id='type-id-962' visibility='default' filepath='./Include/internal/pycore_pyhash.h' line='19' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__4' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pyhash.h' line='10' column='1' id='type-id-962'>
+ <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pyhash.h' line='10' column='1' id='type-id-962'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='fd' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_pyhash.h' line='12' column='1'/>
</data-member>
@@ -16481,7 +16485,7 @@
<var-decl name='obj_arena' type-id='type-id-420' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='32' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__2' size-in-bits='960' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='22' column='1' id='type-id-968'>
+ <class-decl name='__anonymous_struct__1' size-in-bits='960' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='22' column='1' id='type-id-968'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='raw' type-id='type-id-417' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='23' column='1'/>
</data-member>
@@ -16492,7 +16496,7 @@
<var-decl name='obj' type-id='type-id-417' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='25' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__3' size-in-bits='1152' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='27' column='1' id='type-id-969'>
+ <class-decl name='__anonymous_struct__2' size-in-bits='1152' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='27' column='1' id='type-id-969'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='raw' type-id='type-id-965' visibility='default' filepath='./Include/internal/pycore_pymem.h' line='28' column='1'/>
</data-member>
@@ -16511,7 +16515,7 @@
<var-decl name='_condattr_monotonic' type-id='type-id-971' visibility='default' filepath='./Include/internal/pycore_pythread.h' line='66' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__5' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pythread.h' line='59' column='1' id='type-id-971'>
+ <class-decl name='__anonymous_struct__4' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_pythread.h' line='59' column='1' id='type-id-971'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='ptr' type-id='type-id-972' visibility='default' filepath='./Include/internal/pycore_pythread.h' line='61' column='1'/>
</data-member>
@@ -16547,7 +16551,7 @@
</data-member>
</class-decl>
<typedef-decl name='_Py_AuditHookEntry' type-id='type-id-976' filepath='./Include/internal/pycore_runtime.h' line='54' column='1' id='type-id-978'/>
- <class-decl name='pyruntimestate' size-in-bits='3676544' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='61' column='1' id='type-id-979'>
+ <class-decl name='pyruntimestate' size-in-bits='3680896' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='61' column='1' id='type-id-979'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_initialized' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='66' column='1'/>
</data-member>
@@ -16612,51 +16616,51 @@
<var-decl name='imports' type-id='type-id-921' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='132' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='17856'>
- <var-decl name='ceval' type-id='type-id-817' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='133' column='1'/>
+ <var-decl name='ceval' type-id='type-id-818' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='133' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='18432'>
+ <data-member access='public' layout-offset-in-bits='22784'>
<var-decl name='gilstate' type-id='type-id-975' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='134' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='18560'>
+ <data-member access='public' layout-offset-in-bits='22912'>
<var-decl name='getargs' type-id='type-id-974' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='135' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='18688'>
+ <data-member access='public' layout-offset-in-bits='23040'>
<var-decl name='fileutils' type-id='type-id-841' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='136' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='18752'>
+ <data-member access='public' layout-offset-in-bits='23104'>
<var-decl name='faulthandler' type-id='type-id-837' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='137' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='20096'>
+ <data-member access='public' layout-offset-in-bits='24448'>
<var-decl name='tracemalloc' type-id='type-id-984' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='138' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='21952'>
+ <data-member access='public' layout-offset-in-bits='26304'>
<var-decl name='preconfig' type-id='type-id-742' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='140' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22272'>
+ <data-member access='public' layout-offset-in-bits='26624'>
<var-decl name='open_code_hook' type-id='type-id-355' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='144' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22336'>
+ <data-member access='public' layout-offset-in-bits='26688'>
<var-decl name='open_code_userdata' type-id='type-id-22' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='145' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22400'>
+ <data-member access='public' layout-offset-in-bits='26752'>
<var-decl name='audit_hooks' type-id='type-id-985' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='149' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22528'>
+ <data-member access='public' layout-offset-in-bits='26880'>
<var-decl name='object_state' type-id='type-id-941' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='151' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22560'>
+ <data-member access='public' layout-offset-in-bits='26912'>
<var-decl name='float_state' type-id='type-id-844' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='152' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22656'>
+ <data-member access='public' layout-offset-in-bits='27008'>
<var-decl name='unicode_state' type-id='type-id-986' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='153' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22784'>
+ <data-member access='public' layout-offset-in-bits='27136'>
<var-decl name='types' type-id='type-id-987' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='154' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='22848'>
+ <data-member access='public' layout-offset-in-bits='27200'>
<var-decl name='static_objects' type-id='type-id-858' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='157' column='1'/>
</data-member>
- <data-member access='public' layout-offset-in-bits='608896'>
+ <data-member access='public' layout-offset-in-bits='613248'>
<var-decl name='_main_interpreter' type-id='type-id-988' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='174' column='1'/>
</data-member>
</class-decl>
@@ -16682,7 +16686,7 @@
<var-decl name='head' type-id='type-id-940' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='115' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__21' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='146' column='1' id='type-id-985'>
+ <class-decl name='__anonymous_struct__20' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='146' column='1' id='type-id-985'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='mutex' type-id='type-id-799' visibility='default' filepath='./Include/internal/pycore_runtime.h' line='147' column='1'/>
</data-member>
@@ -16710,7 +16714,7 @@
<var-decl name='unhandled_keyboard_interrupt' type-id='type-id-8' visibility='default' filepath='./Include/internal/pycore_signal.h' line='78' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__6' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_signal.h' line='38' column='1' id='type-id-990'>
+ <class-decl name='__anonymous_struct__5' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_signal.h' line='38' column='1' id='type-id-990'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='tripped' type-id='type-id-810' visibility='default' filepath='./Include/internal/pycore_signal.h' line='39' column='1'/>
</data-member>
@@ -16718,7 +16722,7 @@
<var-decl name='func' type-id='type-id-808' visibility='default' filepath='./Include/internal/pycore_signal.h' line='43' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__7' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_signal.h' line='46' column='1' id='type-id-991'>
+ <class-decl name='__anonymous_struct__6' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_signal.h' line='46' column='1' id='type-id-991'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='fd' type-id='type-id-992' visibility='default' filepath='./Include/internal/pycore_signal.h' line='54' column='1'/>
</data-member>
@@ -16811,7 +16815,7 @@
<var-decl name='reentrant_key' type-id='type-id-408' visibility='default' filepath='./Include/internal/pycore_tracemalloc.h' line='106' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__20' size-in-bits='960' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_tracemalloc.h' line='71' column='1' id='type-id-996'>
+ <class-decl name='__anonymous_struct__19' size-in-bits='960' is-struct='yes' is-anonymous='yes' visibility='default' filepath='./Include/internal/pycore_tracemalloc.h' line='71' column='1' id='type-id-996'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='mem' type-id='type-id-417' visibility='default' filepath='./Include/internal/pycore_tracemalloc.h' line='72' column='1'/>
</data-member>
@@ -17189,7 +17193,7 @@
<var-decl name='_sigsys' type-id='type-id-1049' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='121' column='1'/>
</data-member>
</union-decl>
- <class-decl name='__anonymous_struct__13' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='56' column='1' id='type-id-1043'>
+ <class-decl name='__anonymous_struct__12' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='56' column='1' id='type-id-1043'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_pid' type-id='type-id-127' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='58' column='1'/>
</data-member>
@@ -17197,7 +17201,7 @@
<var-decl name='si_uid' type-id='type-id-125' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='59' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__14' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='63' column='1' id='type-id-1044'>
+ <class-decl name='__anonymous_struct__13' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='63' column='1' id='type-id-1044'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_tid' type-id='type-id-8' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='65' column='1'/>
</data-member>
@@ -17208,7 +17212,7 @@
<var-decl name='si_sigval' type-id='type-id-1039' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='67' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__15' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='71' column='1' id='type-id-1045'>
+ <class-decl name='__anonymous_struct__14' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='71' column='1' id='type-id-1045'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_pid' type-id='type-id-127' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='73' column='1'/>
</data-member>
@@ -17219,7 +17223,7 @@
<var-decl name='si_sigval' type-id='type-id-1039' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='75' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__16' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='79' column='1' id='type-id-1046'>
+ <class-decl name='__anonymous_struct__15' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='79' column='1' id='type-id-1046'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_pid' type-id='type-id-127' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='81' column='1'/>
</data-member>
@@ -17236,7 +17240,7 @@
<var-decl name='si_stime' type-id='type-id-97' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='85' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__17' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='89' column='1' id='type-id-1047'>
+ <class-decl name='__anonymous_struct__16' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='89' column='1' id='type-id-1047'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_addr' type-id='type-id-22' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='91' column='1'/>
</data-member>
@@ -17255,7 +17259,7 @@
<var-decl name='_pkey' type-id='type-id-1052' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='103' column='1'/>
</data-member>
</union-decl>
- <class-decl name='__anonymous_struct__18' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='97' column='1' id='type-id-1051'>
+ <class-decl name='__anonymous_struct__17' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='97' column='1' id='type-id-1051'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_lower' type-id='type-id-22' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='99' column='1'/>
</data-member>
@@ -17263,7 +17267,7 @@
<var-decl name='_upper' type-id='type-id-22' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='100' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__19' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='108' column='1' id='type-id-1048'>
+ <class-decl name='__anonymous_struct__18' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='108' column='1' id='type-id-1048'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='si_band' type-id='type-id-47' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='110' column='1'/>
</data-member>
@@ -17271,7 +17275,7 @@
<var-decl name='si_fd' type-id='type-id-8' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='111' column='1'/>
</data-member>
</class-decl>
- <class-decl name='__anonymous_struct__20' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='116' column='1' id='type-id-1049'>
+ <class-decl name='__anonymous_struct__19' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='116' column='1' id='type-id-1049'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='_call_addr' type-id='type-id-22' visibility='default' filepath='/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h' line='118' column='1'/>
</data-member>
@@ -17356,7 +17360,7 @@
<pointer-type-def type-id='type-id-1060' size-in-bits='64' id='type-id-806'/>
<pointer-type-def type-id='type-id-1061' size-in-bits='64' id='type-id-1062'/>
<qualified-type-def type-id='type-id-15' restrict='yes' id='type-id-183'/>
- <pointer-type-def type-id='type-id-622' size-in-bits='64' id='type-id-819'/>
+ <pointer-type-def type-id='type-id-622' size-in-bits='64' id='type-id-820'/>
<pointer-type-def type-id='type-id-430' size-in-bits='64' id='type-id-751'/>
<pointer-type-def type-id='type-id-251' size-in-bits='64' id='type-id-182'/>
<pointer-type-def type-id='type-id-836' size-in-bits='64' id='type-id-840'/>
@@ -17370,7 +17374,7 @@
<pointer-type-def type-id='type-id-1071' size-in-bits='64' id='type-id-729'/>
<pointer-type-def type-id='type-id-1072' size-in-bits='64' id='type-id-737'/>
<pointer-type-def type-id='type-id-1073' size-in-bits='64' id='type-id-1004'/>
- <pointer-type-def type-id='type-id-1074' size-in-bits='64' id='type-id-816'/>
+ <pointer-type-def type-id='type-id-1074' size-in-bits='64' id='type-id-812'/>
<pointer-type-def type-id='type-id-190' size-in-bits='64' id='type-id-78'/>
<pointer-type-def type-id='type-id-944' size-in-bits='64' id='type-id-947'/>
<pointer-type-def type-id='type-id-973' size-in-bits='64' id='type-id-972'/>
@@ -17386,14 +17390,14 @@
<pointer-type-def type-id='type-id-1077' size-in-bits='64' id='type-id-1025'/>
<pointer-type-def type-id='type-id-1078' size-in-bits='64' id='type-id-762'/>
<pointer-type-def type-id='type-id-1079' size-in-bits='64' id='type-id-755'/>
- <pointer-type-def type-id='type-id-1080' size-in-bits='64' id='type-id-815'/>
- <pointer-type-def type-id='type-id-1081' size-in-bits='64' id='type-id-814'/>
+ <pointer-type-def type-id='type-id-1080' size-in-bits='64' id='type-id-817'/>
+ <pointer-type-def type-id='type-id-1081' size-in-bits='64' id='type-id-816'/>
<pointer-type-def type-id='type-id-1082' size-in-bits='64' id='type-id-919'/>
<pointer-type-def type-id='type-id-1083' size-in-bits='64' id='type-id-754'/>
<pointer-type-def type-id='type-id-1084' size-in-bits='64' id='type-id-760'/>
<pointer-type-def type-id='type-id-1085' size-in-bits='64' id='type-id-761'/>
- <qualified-type-def type-id='type-id-990' volatile='yes' id='type-id-698'/>
<qualified-type-def type-id='type-id-991' volatile='yes' id='type-id-989'/>
+ <qualified-type-def type-id='type-id-990' volatile='yes' id='type-id-698'/>
<pointer-type-def type-id='type-id-422' size-in-bits='64' id='type-id-52'/>
<pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-235'/>
<class-decl name='PyAsyncGenASend' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-620'/>
@@ -17417,7 +17421,7 @@
</function-decl>
<var-decl name='_PyOS_ReadlineTState' type-id='type-id-177' mangled-name='_PyOS_ReadlineTState' visibility='default' filepath='./Include/cpython/pythonrun.h' line='120' column='1' elf-symbol-id='_PyOS_ReadlineTState'/>
<var-decl name='PyOS_ReadlineFunctionPointer' type-id='type-id-1062' mangled-name='PyOS_ReadlineFunctionPointer' visibility='default' filepath='./Include/cpython/pythonrun.h' line='121' column='1' elf-symbol-id='PyOS_ReadlineFunctionPointer'/>
- <function-decl name='_PyOS_InterruptOccurred' mangled-name='_PyOS_InterruptOccurred' filepath='./Include/internal/pycore_pystate.h' line='165' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyOS_InterruptOccurred'>
+ <function-decl name='_PyOS_InterruptOccurred' mangled-name='_PyOS_InterruptOccurred' filepath='./Include/internal/pycore_pystate.h' line='157' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyOS_InterruptOccurred'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-8'/>
</function-decl>
@@ -19985,13 +19989,13 @@
<typedef-decl name='newfunc' type-id='type-id-1270' filepath='./Include/object.h' line='319' column='1' id='type-id-1200'/>
<typedef-decl name='allocfunc' type-id='type-id-1271' filepath='./Include/object.h' line='320' column='1' id='type-id-1199'/>
<typedef-decl name='vectorcallfunc' type-id='type-id-1272' filepath='./Include/object.h' line='323' column='1' id='type-id-311'/>
- <enum-decl name='PySendResult' naming-typedef-id='type-id-255' filepath='./Include/object.h' line='850' column='1' id='type-id-1273'>
+ <enum-decl name='PySendResult' naming-typedef-id='type-id-255' filepath='./Include/object.h' line='862' column='1' id='type-id-1273'>
<underlying-type type-id='type-id-24'/>
<enumerator name='PYGEN_RETURN' value='0'/>
<enumerator name='PYGEN_ERROR' value='-1'/>
<enumerator name='PYGEN_NEXT' value='1'/>
</enum-decl>
- <typedef-decl name='PySendResult' type-id='type-id-1273' filepath='./Include/object.h' line='854' column='1' id='type-id-255'/>
+ <typedef-decl name='PySendResult' type-id='type-id-1273' filepath='./Include/object.h' line='866' column='1' id='type-id-255'/>
<class-decl name='Py_buffer' size-in-bits='640' is-struct='yes' naming-typedef-id='type-id-243' visibility='default' filepath='./Include/pybuffer.h' line='20' column='1' id='type-id-1274'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='buf' type-id='type-id-22' visibility='default' filepath='./Include/pybuffer.h' line='21' column='1'/>
@@ -21299,7 +21303,7 @@
<parameter type-id='type-id-8'/>
<return type-id='type-id-1303'/>
</function-decl>
- <function-decl name='PyInit__tokenize' mangled-name='PyInit__tokenize' filepath='Python/Python-tokenize.c' line='361' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInit__tokenize'>
+ <function-decl name='PyInit__tokenize' mangled-name='PyInit__tokenize' filepath='Python/Python-tokenize.c' line='364' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInit__tokenize'>
<return type-id='type-id-2'/>
</function-decl>
</abi-instr>
@@ -21357,17 +21361,17 @@
<parameter type-id='type-id-2' name='registry' filepath='Python/_warnings.c' line='1301' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyErr_WarnExplicitFormat' mangled-name='PyErr_WarnExplicitFormat' filepath='Python/_warnings.c' line='1327' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_WarnExplicitFormat'>
- <parameter type-id='type-id-2' name='category' filepath='Python/_warnings.c' line='1327' column='1'/>
- <parameter type-id='type-id-12' name='filename_str' filepath='Python/_warnings.c' line='1328' column='1'/>
- <parameter type-id='type-id-8' name='lineno' filepath='Python/_warnings.c' line='1328' column='1'/>
- <parameter type-id='type-id-12' name='module_str' filepath='Python/_warnings.c' line='1329' column='1'/>
- <parameter type-id='type-id-2' name='registry' filepath='Python/_warnings.c' line='1329' column='1'/>
- <parameter type-id='type-id-12' name='format' filepath='Python/_warnings.c' line='1330' column='1'/>
+ <function-decl name='PyErr_WarnExplicitFormat' mangled-name='PyErr_WarnExplicitFormat' filepath='Python/_warnings.c' line='1331' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyErr_WarnExplicitFormat'>
+ <parameter type-id='type-id-2' name='category' filepath='Python/_warnings.c' line='1331' column='1'/>
+ <parameter type-id='type-id-12' name='filename_str' filepath='Python/_warnings.c' line='1332' column='1'/>
+ <parameter type-id='type-id-8' name='lineno' filepath='Python/_warnings.c' line='1332' column='1'/>
+ <parameter type-id='type-id-12' name='module_str' filepath='Python/_warnings.c' line='1333' column='1'/>
+ <parameter type-id='type-id-2' name='registry' filepath='Python/_warnings.c' line='1333' column='1'/>
+ <parameter type-id='type-id-12' name='format' filepath='Python/_warnings.c' line='1334' column='1'/>
<parameter is-variadic='yes'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyWarnings_Init' mangled-name='_PyWarnings_Init' filepath='Python/_warnings.c' line='1467' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyWarnings_Init'>
+ <function-decl name='_PyWarnings_Init' mangled-name='_PyWarnings_Init' filepath='Python/_warnings.c' line='1471' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyWarnings_Init'>
<return type-id='type-id-2'/>
</function-decl>
</abi-instr>
@@ -21620,11 +21624,11 @@
<parameter type-id='type-id-2'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_Py_MakeCoro' filepath='./Include/internal/pycore_ceval.h' line='152' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_Py_MakeCoro' filepath='./Include/internal/pycore_ceval.h' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-310'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_Py_HandlePending' filepath='./Include/internal/pycore_ceval.h' line='154' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_Py_HandlePending' filepath='./Include/internal/pycore_ceval.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-8'/>
</function-decl>
@@ -21897,58 +21901,58 @@
<parameter type-id='type-id-8' name='throwflag' filepath='Python/ceval.c' line='584' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyThreadState_EnterTracing' mangled-name='PyThreadState_EnterTracing' filepath='Python/ceval.c' line='2030' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_EnterTracing'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval.c' line='2030' column='1'/>
+ <function-decl name='PyThreadState_EnterTracing' mangled-name='PyThreadState_EnterTracing' filepath='Python/ceval.c' line='2085' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_EnterTracing'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval.c' line='2085' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyThreadState_LeaveTracing' mangled-name='PyThreadState_LeaveTracing' filepath='Python/ceval.c' line='2037' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_LeaveTracing'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval.c' line='2037' column='1'/>
+ <function-decl name='PyThreadState_LeaveTracing' mangled-name='PyThreadState_LeaveTracing' filepath='Python/ceval.c' line='2092' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_LeaveTracing'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval.c' line='2092' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_SetProfile' mangled-name='PyEval_SetProfile' filepath='Python/ceval.c' line='2061' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetProfile'>
- <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2061' column='1'/>
- <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2061' column='1'/>
+ <function-decl name='PyEval_SetProfile' mangled-name='PyEval_SetProfile' filepath='Python/ceval.c' line='2116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetProfile'>
+ <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2116' column='1'/>
+ <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2116' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_SetProfileAllThreads' mangled-name='PyEval_SetProfileAllThreads' filepath='Python/ceval.c' line='2071' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetProfileAllThreads'>
- <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2071' column='1'/>
- <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2071' column='1'/>
+ <function-decl name='PyEval_SetProfileAllThreads' mangled-name='PyEval_SetProfileAllThreads' filepath='Python/ceval.c' line='2126' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetProfileAllThreads'>
+ <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2126' column='1'/>
+ <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2126' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_SetTrace' mangled-name='PyEval_SetTrace' filepath='Python/ceval.c' line='2092' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetTrace'>
- <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2092' column='1'/>
- <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2092' column='1'/>
+ <function-decl name='PyEval_SetTrace' mangled-name='PyEval_SetTrace' filepath='Python/ceval.c' line='2147' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetTrace'>
+ <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2147' column='1'/>
+ <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2147' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_SetTraceAllThreads' mangled-name='PyEval_SetTraceAllThreads' filepath='Python/ceval.c' line='2102' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetTraceAllThreads'>
- <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2102' column='1'/>
- <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2102' column='1'/>
+ <function-decl name='PyEval_SetTraceAllThreads' mangled-name='PyEval_SetTraceAllThreads' filepath='Python/ceval.c' line='2157' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_SetTraceAllThreads'>
+ <parameter type-id='type-id-764' name='func' filepath='Python/ceval.c' line='2157' column='1'/>
+ <parameter type-id='type-id-2' name='arg' filepath='Python/ceval.c' line='2157' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_GetFrame' mangled-name='PyEval_GetFrame' filepath='Python/ceval.c' line='2190' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFrame'>
+ <function-decl name='PyEval_GetFrame' mangled-name='PyEval_GetFrame' filepath='Python/ceval.c' line='2245' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFrame'>
<return type-id='type-id-365'/>
</function-decl>
- <function-decl name='_PyEval_GetBuiltinId' mangled-name='_PyEval_GetBuiltinId' filepath='Python/ceval.c' line='2236' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_GetBuiltinId'>
- <parameter type-id='type-id-309' name='name' filepath='Python/ceval.c' line='2236' column='1'/>
+ <function-decl name='_PyEval_GetBuiltinId' mangled-name='_PyEval_GetBuiltinId' filepath='Python/ceval.c' line='2291' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_GetBuiltinId'>
+ <parameter type-id='type-id-309' name='name' filepath='Python/ceval.c' line='2291' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyEval_GetFuncName' mangled-name='PyEval_GetFuncName' filepath='Python/ceval.c' line='2291' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFuncName'>
- <parameter type-id='type-id-2' name='func' filepath='Python/ceval.c' line='2291' column='1'/>
+ <function-decl name='PyEval_GetFuncName' mangled-name='PyEval_GetFuncName' filepath='Python/ceval.c' line='2346' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFuncName'>
+ <parameter type-id='type-id-2' name='func' filepath='Python/ceval.c' line='2346' column='1'/>
<return type-id='type-id-12'/>
</function-decl>
- <function-decl name='PyEval_GetFuncDesc' mangled-name='PyEval_GetFuncDesc' filepath='Python/ceval.c' line='2304' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFuncDesc'>
- <parameter type-id='type-id-2' name='func' filepath='Python/ceval.c' line='2304' column='1'/>
+ <function-decl name='PyEval_GetFuncDesc' mangled-name='PyEval_GetFuncDesc' filepath='Python/ceval.c' line='2359' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_GetFuncDesc'>
+ <parameter type-id='type-id-2' name='func' filepath='Python/ceval.c' line='2359' column='1'/>
<return type-id='type-id-12'/>
</function-decl>
- <function-decl name='PyUnstable_Eval_RequestCodeExtraIndex' mangled-name='PyUnstable_Eval_RequestCodeExtraIndex' filepath='Python/ceval.c' line='2676' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnstable_Eval_RequestCodeExtraIndex'>
- <parameter type-id='type-id-397' name='free' filepath='Python/ceval.c' line='2676' column='1'/>
+ <function-decl name='PyUnstable_Eval_RequestCodeExtraIndex' mangled-name='PyUnstable_Eval_RequestCodeExtraIndex' filepath='Python/ceval.c' line='2731' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyUnstable_Eval_RequestCodeExtraIndex'>
+ <parameter type-id='type-id-397' name='free' filepath='Python/ceval.c' line='2731' column='1'/>
<return type-id='type-id-14'/>
</function-decl>
- <function-decl name='Py_EnterRecursiveCall' mangled-name='Py_EnterRecursiveCall' filepath='Python/ceval.c' line='2692' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_EnterRecursiveCall'>
- <parameter type-id='type-id-12' name='where' filepath='Python/ceval.c' line='2692' column='1'/>
+ <function-decl name='Py_EnterRecursiveCall' mangled-name='Py_EnterRecursiveCall' filepath='Python/ceval.c' line='2747' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_EnterRecursiveCall'>
+ <parameter type-id='type-id-12' name='where' filepath='Python/ceval.c' line='2747' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='Py_LeaveRecursiveCall' mangled-name='Py_LeaveRecursiveCall' filepath='Python/ceval.c' line='2697' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_LeaveRecursiveCall'>
+ <function-decl name='Py_LeaveRecursiveCall' mangled-name='Py_LeaveRecursiveCall' filepath='Python/ceval.c' line='2752' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_LeaveRecursiveCall'>
<return type-id='type-id-46'/>
</function-decl>
</abi-instr>
@@ -21987,7 +21991,7 @@
<parameter type-id='type-id-1343'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyThreadState_SwapNoGIL' filepath='./Include/internal/pycore_ceval.h' line='104' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyThreadState_SwapNoGIL' filepath='./Include/internal/pycore_ceval.h' line='105' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-177'/>
</function-decl>
@@ -22003,13 +22007,10 @@
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_DeleteExcept' mangled-name='_PyThreadState_DeleteExcept' filepath='./Include/internal/pycore_pystate.h' line='137' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_DeleteExcept'>
+ <function-decl name='_PyThreadState_DeleteExcept' mangled-name='_PyThreadState_DeleteExcept' filepath='./Include/internal/pycore_pystate.h' line='129' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_DeleteExcept'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyGILState_GetThisThreadState' mangled-name='PyGILState_GetThisThreadState' filepath='./Include/pystate.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyGILState_GetThisThreadState'>
- <return type-id='type-id-177'/>
- </function-decl>
<function-decl name='PyThread_init_thread' mangled-name='PyThread_init_thread' filepath='./Include/pythread.h' line='18' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThread_init_thread'>
<return type-id='type-id-46'/>
</function-decl>
@@ -22059,53 +22060,58 @@
<parameter type-id='type-id-206'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_SetSwitchInterval' mangled-name='_PyEval_SetSwitchInterval' filepath='Python/ceval_gil.c' line='488' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SetSwitchInterval'>
- <parameter type-id='type-id-28' name='microseconds' filepath='Python/ceval_gil.c' line='488' column='1'/>
+ <function-decl name='_PyEval_SetSwitchInterval' mangled-name='_PyEval_SetSwitchInterval' filepath='Python/ceval_gil.c' line='492' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SetSwitchInterval'>
+ <parameter type-id='type-id-28' name='microseconds' filepath='Python/ceval_gil.c' line='492' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_GetSwitchInterval' mangled-name='_PyEval_GetSwitchInterval' filepath='Python/ceval_gil.c' line='496' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_GetSwitchInterval'>
+ <function-decl name='_PyEval_GetSwitchInterval' mangled-name='_PyEval_GetSwitchInterval' filepath='Python/ceval_gil.c' line='500' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_GetSwitchInterval'>
<return type-id='type-id-28'/>
</function-decl>
- <function-decl name='PyEval_ThreadsInitialized' mangled-name='PyEval_ThreadsInitialized' filepath='Python/ceval_gil.c' line='520' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ThreadsInitialized'>
+ <function-decl name='PyEval_ThreadsInitialized' mangled-name='PyEval_ThreadsInitialized' filepath='Python/ceval_gil.c' line='524' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ThreadsInitialized'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyEval_InitThreads' mangled-name='PyEval_InitThreads' filepath='Python/ceval_gil.c' line='608' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_InitThreads'>
+ <function-decl name='PyEval_InitThreads' mangled-name='PyEval_InitThreads' filepath='Python/ceval_gil.c' line='612' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_InitThreads'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_AcquireLock' mangled-name='PyEval_AcquireLock' filepath='Python/ceval_gil.c' line='621' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_AcquireLock'>
+ <function-decl name='PyEval_AcquireLock' mangled-name='PyEval_AcquireLock' filepath='Python/ceval_gil.c' line='625' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_AcquireLock'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_ReleaseLock' mangled-name='PyEval_ReleaseLock' filepath='Python/ceval_gil.c' line='630' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ReleaseLock'>
+ <function-decl name='PyEval_ReleaseLock' mangled-name='PyEval_ReleaseLock' filepath='Python/ceval_gil.c' line='634' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ReleaseLock'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_AcquireThread' mangled-name='PyEval_AcquireThread' filepath='Python/ceval_gil.c' line='658' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_AcquireThread'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval_gil.c' line='658' column='1'/>
+ <function-decl name='PyEval_AcquireThread' mangled-name='PyEval_AcquireThread' filepath='Python/ceval_gil.c' line='662' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_AcquireThread'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval_gil.c' line='662' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyEval_ReleaseThread' mangled-name='PyEval_ReleaseThread' filepath='Python/ceval_gil.c' line='670' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ReleaseThread'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval_gil.c' line='670' column='1'/>
+ <function-decl name='PyEval_ReleaseThread' mangled-name='PyEval_ReleaseThread' filepath='Python/ceval_gil.c' line='674' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyEval_ReleaseThread'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval_gil.c' line='674' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_SignalAsyncExc' mangled-name='_PyEval_SignalAsyncExc' filepath='Python/ceval_gil.c' line='714' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SignalAsyncExc'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='714' column='1'/>
+ <function-decl name='_PyEval_SignalAsyncExc' mangled-name='_PyEval_SignalAsyncExc' filepath='Python/ceval_gil.c' line='718' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SignalAsyncExc'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='718' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_SignalReceived' mangled-name='_PyEval_SignalReceived' filepath='Python/ceval_gil.c' line='765' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SignalReceived'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='765' column='1'/>
+ <function-decl name='_PyEval_SignalReceived' mangled-name='_PyEval_SignalReceived' filepath='Python/ceval_gil.c' line='769' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_SignalReceived'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='769' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_AddPendingCall' mangled-name='_PyEval_AddPendingCall' filepath='Python/ceval_gil.c' line='822' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_AddPendingCall'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='822' column='1'/>
- <parameter type-id='type-id-816' name='func' filepath='Python/ceval_gil.c' line='823' column='1'/>
- <parameter type-id='type-id-22' name='arg' filepath='Python/ceval_gil.c' line='823' column='1'/>
+ <function-decl name='_PyEval_AddPendingCall' mangled-name='_PyEval_AddPendingCall' filepath='Python/ceval_gil.c' line='838' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_AddPendingCall'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/ceval_gil.c' line='838' column='1'/>
+ <parameter type-id='type-id-812' name='func' filepath='Python/ceval_gil.c' line='839' column='1'/>
+ <parameter type-id='type-id-22' name='arg' filepath='Python/ceval_gil.c' line='839' column='1'/>
+ <parameter type-id='type-id-8' name='mainthreadonly' filepath='Python/ceval_gil.c' line='840' column='1'/>
+ <return type-id='type-id-8'/>
+ </function-decl>
+ <function-decl name='Py_AddPendingCall' mangled-name='Py_AddPendingCall' filepath='Python/ceval_gil.c' line='863' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_AddPendingCall'>
+ <parameter type-id='type-id-812' name='func' filepath='Python/ceval_gil.c' line='863' column='1'/>
+ <parameter type-id='type-id-22' name='arg' filepath='Python/ceval_gil.c' line='863' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='Py_AddPendingCall' mangled-name='Py_AddPendingCall' filepath='Python/ceval_gil.c' line='840' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_AddPendingCall'>
- <parameter type-id='type-id-816' name='func' filepath='Python/ceval_gil.c' line='840' column='1'/>
- <parameter type-id='type-id-22' name='arg' filepath='Python/ceval_gil.c' line='840' column='1'/>
+ <function-decl name='_PyEval_MakePendingCalls' mangled-name='_PyEval_MakePendingCalls' filepath='Python/ceval_gil.c' line='991' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyEval_MakePendingCalls'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/ceval_gil.c' line='991' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='Py_MakePendingCalls' mangled-name='Py_MakePendingCalls' filepath='Python/ceval_gil.c' line='959' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_MakePendingCalls'>
+ <function-decl name='Py_MakePendingCalls' mangled-name='Py_MakePendingCalls' filepath='Python/ceval_gil.c' line='1016' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_MakePendingCalls'>
<return type-id='type-id-8'/>
</function-decl>
<function-decl name='_PyThread_cond_init' filepath='Python/condvar.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -22731,35 +22737,35 @@
<parameter type-id='type-id-8' name='jump' filepath='Python/compile.c' line='876' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCompile_CodeGen' mangled-name='_PyCompile_CodeGen' filepath='Python/compile.c' line='7926' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_CodeGen'>
- <parameter type-id='type-id-2' name='ast' filepath='Python/compile.c' line='7926' column='1'/>
- <parameter type-id='type-id-2' name='filename' filepath='Python/compile.c' line='7926' column='1'/>
- <parameter type-id='type-id-208' name='pflags' filepath='Python/compile.c' line='7926' column='1'/>
- <parameter type-id='type-id-8' name='optimize' filepath='Python/compile.c' line='7927' column='1'/>
- <parameter type-id='type-id-8' name='compile_mode' filepath='Python/compile.c' line='7927' column='1'/>
+ <function-decl name='_PyCompile_CodeGen' mangled-name='_PyCompile_CodeGen' filepath='Python/compile.c' line='7930' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_CodeGen'>
+ <parameter type-id='type-id-2' name='ast' filepath='Python/compile.c' line='7930' column='1'/>
+ <parameter type-id='type-id-2' name='filename' filepath='Python/compile.c' line='7930' column='1'/>
+ <parameter type-id='type-id-208' name='pflags' filepath='Python/compile.c' line='7930' column='1'/>
+ <parameter type-id='type-id-8' name='optimize' filepath='Python/compile.c' line='7931' column='1'/>
+ <parameter type-id='type-id-8' name='compile_mode' filepath='Python/compile.c' line='7931' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyCompile_OptimizeCfg' mangled-name='_PyCompile_OptimizeCfg' filepath='Python/compile.c' line='8011' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_OptimizeCfg'>
- <parameter type-id='type-id-2' name='instructions' filepath='Python/compile.c' line='8011' column='1'/>
- <parameter type-id='type-id-2' name='consts' filepath='Python/compile.c' line='8011' column='1'/>
- <parameter type-id='type-id-8' name='nlocals' filepath='Python/compile.c' line='8011' column='1'/>
+ <function-decl name='_PyCompile_OptimizeCfg' mangled-name='_PyCompile_OptimizeCfg' filepath='Python/compile.c' line='8015' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_OptimizeCfg'>
+ <parameter type-id='type-id-2' name='instructions' filepath='Python/compile.c' line='8015' column='1'/>
+ <parameter type-id='type-id-2' name='consts' filepath='Python/compile.c' line='8015' column='1'/>
+ <parameter type-id='type-id-8' name='nlocals' filepath='Python/compile.c' line='8015' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyCfg_JumpLabelsToTargets' filepath='Python/compile.c' line='8035' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyCfg_JumpLabelsToTargets' filepath='Python/compile.c' line='8039' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-1399'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCompile_Assemble' mangled-name='_PyCompile_Assemble' filepath='Python/compile.c' line='8038' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_Assemble'>
- <parameter type-id='type-id-1397' name='umd' filepath='Python/compile.c' line='8038' column='1'/>
- <parameter type-id='type-id-2' name='filename' filepath='Python/compile.c' line='8038' column='1'/>
- <parameter type-id='type-id-2' name='instructions' filepath='Python/compile.c' line='8039' column='1'/>
+ <function-decl name='_PyCompile_Assemble' mangled-name='_PyCompile_Assemble' filepath='Python/compile.c' line='8042' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCompile_Assemble'>
+ <parameter type-id='type-id-1397' name='umd' filepath='Python/compile.c' line='8042' column='1'/>
+ <parameter type-id='type-id-2' name='filename' filepath='Python/compile.c' line='8042' column='1'/>
+ <parameter type-id='type-id-2' name='instructions' filepath='Python/compile.c' line='8043' column='1'/>
<return type-id='type-id-328'/>
</function-decl>
- <function-decl name='PyCode_Optimize' mangled-name='PyCode_Optimize' filepath='Python/compile.c' line='8105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyCode_Optimize'>
- <parameter type-id='type-id-2' name='code' filepath='Python/compile.c' line='8105' column='1'/>
- <parameter type-id='type-id-2' name='_unused_consts' filepath='Python/compile.c' line='8105' column='1'/>
- <parameter type-id='type-id-2' name='_unused_names' filepath='Python/compile.c' line='8106' column='1'/>
- <parameter type-id='type-id-2' name='_unused_lnotab_obj' filepath='Python/compile.c' line='8106' column='1'/>
+ <function-decl name='PyCode_Optimize' mangled-name='PyCode_Optimize' filepath='Python/compile.c' line='8109' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyCode_Optimize'>
+ <parameter type-id='type-id-2' name='code' filepath='Python/compile.c' line='8109' column='1'/>
+ <parameter type-id='type-id-2' name='_unused_consts' filepath='Python/compile.c' line='8109' column='1'/>
+ <parameter type-id='type-id-2' name='_unused_names' filepath='Python/compile.c' line='8110' column='1'/>
+ <parameter type-id='type-id-2' name='_unused_lnotab_obj' filepath='Python/compile.c' line='8110' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
<function-decl name='_PyOpcode_num_popped' filepath='Python/opcode_metadata.h' line='7' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -23689,24 +23695,24 @@
<parameter type-id='type-id-14'/>
<return type-id='type-id-117'/>
</function-decl>
- <function-decl name='_PyThreadState_InitDetached' filepath='./Include/internal/pycore_pystate.h' line='139' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyThreadState_InitDetached' filepath='./Include/internal/pycore_pystate.h' line='131' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<parameter type-id='type-id-20'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_ClearDetached' filepath='./Include/internal/pycore_pystate.h' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyThreadState_ClearDetached' filepath='./Include/internal/pycore_pystate.h' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_BindDetached' filepath='./Include/internal/pycore_pystate.h' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyThreadState_BindDetached' filepath='./Include/internal/pycore_pystate.h' line='133' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_UnbindDetached' filepath='./Include/internal/pycore_pystate.h' line='142' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyThreadState_UnbindDetached' filepath='./Include/internal/pycore_pystate.h' line='134' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_Swap' mangled-name='_PyThreadState_Swap' filepath='./Include/internal/pycore_pystate.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Swap'>
+ <function-decl name='_PyThreadState_Swap' mangled-name='_PyThreadState_Swap' filepath='./Include/internal/pycore_pystate.h' line='139' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Swap'>
<parameter type-id='type-id-178'/>
<parameter type-id='type-id-177'/>
<return type-id='type-id-177'/>
@@ -24534,7 +24540,7 @@
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='Python/perf_trampoline.c' comp-dir-path='/home/runner/work/cpython/cpython' language='LANG_C11'>
- <var-decl name='_Py_perfmap_callbacks' type-id='type-id-1463' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='79' column='1'/>
+ <var-decl name='_Py_perfmap_callbacks' type-id='type-id-1463' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='80' column='1'/>
<function-decl name='mprotect' filepath='/usr/include/x86_64-linux-gnu/sys/mman.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-22'/>
<parameter type-id='type-id-19'/>
@@ -24676,42 +24682,42 @@
</function-type>
</abi-instr>
<abi-instr address-size='64' path='Python/pylifecycle.c' comp-dir-path='/home/runner/work/cpython/cpython' language='LANG_C11'>
- <class-decl name='PyInterpreterConfig' size-in-bits='224' is-struct='yes' naming-typedef-id='type-id-1481' visibility='default' filepath='./Include/cpython/initconfig.h' line='247' column='1' id='type-id-1482'>
+ <class-decl name='PyInterpreterConfig' size-in-bits='224' is-struct='yes' naming-typedef-id='type-id-1481' visibility='default' filepath='./Include/cpython/initconfig.h' line='251' column='1' id='type-id-1482'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='use_main_obmalloc' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='249' column='1'/>
+ <var-decl name='use_main_obmalloc' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='253' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='32'>
- <var-decl name='allow_fork' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='250' column='1'/>
+ <var-decl name='allow_fork' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='254' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='allow_exec' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='251' column='1'/>
+ <var-decl name='allow_exec' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='255' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='96'>
- <var-decl name='allow_threads' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='252' column='1'/>
+ <var-decl name='allow_threads' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='256' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='allow_daemon_threads' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='253' column='1'/>
+ <var-decl name='allow_daemon_threads' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='257' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='160'>
- <var-decl name='check_multi_interp_extensions' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='254' column='1'/>
+ <var-decl name='check_multi_interp_extensions' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='258' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
- <var-decl name='own_gil' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='255' column='1'/>
+ <var-decl name='gil' type-id='type-id-8' visibility='default' filepath='./Include/cpython/initconfig.h' line='259' column='1'/>
</data-member>
</class-decl>
- <typedef-decl name='PyInterpreterConfig' type-id='type-id-1482' filepath='./Include/cpython/initconfig.h' line='256' column='1' id='type-id-1481'/>
- <class-decl name='_PyPerf_Callbacks' size-in-bits='192' is-struct='yes' naming-typedef-id='type-id-1463' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='62' column='1' id='type-id-1483'>
+ <typedef-decl name='PyInterpreterConfig' type-id='type-id-1482' filepath='./Include/cpython/initconfig.h' line='260' column='1' id='type-id-1481'/>
+ <class-decl name='_PyPerf_Callbacks' size-in-bits='192' is-struct='yes' naming-typedef-id='type-id-1463' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='63' column='1' id='type-id-1483'>
<data-member access='public' layout-offset-in-bits='0'>
- <var-decl name='init_state' type-id='type-id-814' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='64' column='1'/>
+ <var-decl name='init_state' type-id='type-id-816' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='65' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
- <var-decl name='write_state' type-id='type-id-815' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='66' column='1'/>
+ <var-decl name='write_state' type-id='type-id-817' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='67' column='1'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
- <var-decl name='free_state' type-id='type-id-816' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='69' column='1'/>
+ <var-decl name='free_state' type-id='type-id-812' visibility='default' filepath='./Include/internal/pycore_ceval.h' line='70' column='1'/>
</data-member>
</class-decl>
- <typedef-decl name='_PyPerf_Callbacks' type-id='type-id-1483' filepath='./Include/internal/pycore_ceval.h' line='70' column='1' id='type-id-1463'/>
+ <typedef-decl name='_PyPerf_Callbacks' type-id='type-id-1483' filepath='./Include/internal/pycore_ceval.h' line='71' column='1' id='type-id-1463'/>
<class-decl name='_PyShimCodeDef' size-in-bits='192' is-struct='yes' visibility='default' filepath='./Include/internal/pycore_code.h' line='453' column='1' id='type-id-1484'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='code' type-id='type-id-316' visibility='default' filepath='./Include/internal/pycore_code.h' line='454' column='1'/>
@@ -24746,30 +24752,30 @@
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_Fini' filepath='./Include/internal/pycore_ceval.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_Fini' filepath='./Include/internal/pycore_ceval.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyPerfTrampoline_SetCallbacks' filepath='./Include/internal/pycore_ceval.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyPerfTrampoline_SetCallbacks' filepath='./Include/internal/pycore_ceval.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-231'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyPerfTrampoline_Init' filepath='./Include/internal/pycore_ceval.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyPerfTrampoline_Init' filepath='./Include/internal/pycore_ceval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-8'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyPerfTrampoline_Fini' filepath='./Include/internal/pycore_ceval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyPerfTrampoline_Fini' filepath='./Include/internal/pycore_ceval.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyEval_InitGIL' filepath='./Include/internal/pycore_ceval.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_InitGIL' filepath='./Include/internal/pycore_ceval.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<parameter type-id='type-id-8'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='_PyEval_FiniGIL' filepath='./Include/internal/pycore_ceval.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_FiniGIL' filepath='./Include/internal/pycore_ceval.h' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-20'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_ReleaseLock' filepath='./Include/internal/pycore_ceval.h' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_ReleaseLock' filepath='./Include/internal/pycore_ceval.h' line='104' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-20'/>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
@@ -25106,15 +25112,15 @@
<parameter type-id='type-id-19'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_New' mangled-name='_PyThreadState_New' filepath='./Include/internal/pycore_pystate.h' line='132' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_New'>
+ <function-decl name='_PyThreadState_New' mangled-name='_PyThreadState_New' filepath='./Include/internal/pycore_pystate.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_New'>
<parameter type-id='type-id-20'/>
<return type-id='type-id-177'/>
</function-decl>
- <function-decl name='_PyThreadState_Bind' mangled-name='_PyThreadState_Bind' filepath='./Include/internal/pycore_pystate.h' line='133' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Bind'>
+ <function-decl name='_PyThreadState_Bind' mangled-name='_PyThreadState_Bind' filepath='./Include/internal/pycore_pystate.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Bind'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyInterpreterState_Enable' mangled-name='_PyInterpreterState_Enable' filepath='./Include/internal/pycore_pystate.h' line='151' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_Enable'>
+ <function-decl name='_PyInterpreterState_Enable' mangled-name='_PyInterpreterState_Enable' filepath='./Include/internal/pycore_pystate.h' line='143' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_Enable'>
<parameter type-id='type-id-178'/>
<return type-id='type-id-54'/>
</function-decl>
@@ -25236,6 +25242,9 @@
<parameter type-id='type-id-177'/>
<return type-id='type-id-177'/>
</function-decl>
+ <function-decl name='PyGILState_GetThisThreadState' mangled-name='PyGILState_GetThisThreadState' filepath='./Include/pystate.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyGILState_GetThisThreadState'>
+ <return type-id='type-id-177'/>
+ </function-decl>
<function-decl name='PyOS_mystrnicmp' mangled-name='PyOS_mystrnicmp' filepath='./Include/pystrcmp.h' line='8' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_mystrnicmp'>
<parameter type-id='type-id-12'/>
<parameter type-id='type-id-12'/>
@@ -25308,91 +25317,91 @@
<parameter type-id='type-id-260' name='src_config' filepath='Python/pylifecycle.c' line='414' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_Py_PreInitializeFromPyArgv' mangled-name='_Py_PreInitializeFromPyArgv' filepath='Python/pylifecycle.c' line='898' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_PreInitializeFromPyArgv'>
- <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='898' column='1'/>
- <parameter type-id='type-id-1438' name='args' filepath='Python/pylifecycle.c' line='898' column='1'/>
+ <function-decl name='_Py_PreInitializeFromPyArgv' mangled-name='_Py_PreInitializeFromPyArgv' filepath='Python/pylifecycle.c' line='909' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_PreInitializeFromPyArgv'>
+ <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='909' column='1'/>
+ <parameter type-id='type-id-1438' name='args' filepath='Python/pylifecycle.c' line='909' column='1'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_PreInitializeFromBytesArgs' mangled-name='Py_PreInitializeFromBytesArgs' filepath='Python/pylifecycle.c' line='945' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitializeFromBytesArgs'>
- <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='945' column='1'/>
- <parameter type-id='type-id-14' name='argc' filepath='Python/pylifecycle.c' line='945' column='1'/>
- <parameter type-id='type-id-239' name='argv' filepath='Python/pylifecycle.c' line='945' column='1'/>
+ <function-decl name='Py_PreInitializeFromBytesArgs' mangled-name='Py_PreInitializeFromBytesArgs' filepath='Python/pylifecycle.c' line='956' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitializeFromBytesArgs'>
+ <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='956' column='1'/>
+ <parameter type-id='type-id-14' name='argc' filepath='Python/pylifecycle.c' line='956' column='1'/>
+ <parameter type-id='type-id-239' name='argv' filepath='Python/pylifecycle.c' line='956' column='1'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_PreInitializeFromArgs' mangled-name='Py_PreInitializeFromArgs' filepath='Python/pylifecycle.c' line='953' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitializeFromArgs'>
- <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='953' column='1'/>
- <parameter type-id='type-id-14' name='argc' filepath='Python/pylifecycle.c' line='953' column='1'/>
- <parameter type-id='type-id-235' name='argv' filepath='Python/pylifecycle.c' line='953' column='1'/>
+ <function-decl name='Py_PreInitializeFromArgs' mangled-name='Py_PreInitializeFromArgs' filepath='Python/pylifecycle.c' line='964' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitializeFromArgs'>
+ <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='964' column='1'/>
+ <parameter type-id='type-id-14' name='argc' filepath='Python/pylifecycle.c' line='964' column='1'/>
+ <parameter type-id='type-id-235' name='argv' filepath='Python/pylifecycle.c' line='964' column='1'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_PreInitialize' mangled-name='Py_PreInitialize' filepath='Python/pylifecycle.c' line='961' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitialize'>
- <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='961' column='1'/>
+ <function-decl name='Py_PreInitialize' mangled-name='Py_PreInitialize' filepath='Python/pylifecycle.c' line='972' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_PreInitialize'>
+ <parameter type-id='type-id-1435' name='src_config' filepath='Python/pylifecycle.c' line='972' column='1'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_InitializeEx' mangled-name='Py_InitializeEx' filepath='Python/pylifecycle.c' line='1263' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_InitializeEx'>
- <parameter type-id='type-id-8' name='install_sigs' filepath='Python/pylifecycle.c' line='1263' column='1'/>
+ <function-decl name='Py_InitializeEx' mangled-name='Py_InitializeEx' filepath='Python/pylifecycle.c' line='1274' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_InitializeEx'>
+ <parameter type-id='type-id-8' name='install_sigs' filepath='Python/pylifecycle.c' line='1274' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='Py_Initialize' mangled-name='Py_Initialize' filepath='Python/pylifecycle.c' line='1291' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Initialize'>
+ <function-decl name='Py_Initialize' mangled-name='Py_Initialize' filepath='Python/pylifecycle.c' line='1302' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Initialize'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_Py_InitializeMain' mangled-name='_Py_InitializeMain' filepath='Python/pylifecycle.c' line='1298' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_InitializeMain'>
+ <function-decl name='_Py_InitializeMain' mangled-name='_Py_InitializeMain' filepath='Python/pylifecycle.c' line='1309' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_InitializeMain'>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_Finalize' mangled-name='Py_Finalize' filepath='Python/pylifecycle.c' line='1973' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Finalize'>
+ <function-decl name='Py_Finalize' mangled-name='Py_Finalize' filepath='Python/pylifecycle.c' line='1984' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Finalize'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='Py_NewInterpreterFromConfig' mangled-name='Py_NewInterpreterFromConfig' filepath='Python/pylifecycle.c' line='2098' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_NewInterpreterFromConfig'>
- <parameter type-id='type-id-1488' name='tstate_p' filepath='Python/pylifecycle.c' line='2098' column='1'/>
- <parameter type-id='type-id-1490' name='config' filepath='Python/pylifecycle.c' line='2099' column='1'/>
+ <function-decl name='Py_NewInterpreterFromConfig' mangled-name='Py_NewInterpreterFromConfig' filepath='Python/pylifecycle.c' line='2109' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_NewInterpreterFromConfig'>
+ <parameter type-id='type-id-1488' name='tstate_p' filepath='Python/pylifecycle.c' line='2109' column='1'/>
+ <parameter type-id='type-id-1490' name='config' filepath='Python/pylifecycle.c' line='2110' column='1'/>
<return type-id='type-id-54'/>
</function-decl>
- <function-decl name='Py_NewInterpreter' mangled-name='Py_NewInterpreter' filepath='Python/pylifecycle.c' line='2105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_NewInterpreter'>
+ <function-decl name='Py_NewInterpreter' mangled-name='Py_NewInterpreter' filepath='Python/pylifecycle.c' line='2116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_NewInterpreter'>
<return type-id='type-id-177'/>
</function-decl>
- <function-decl name='Py_EndInterpreter' mangled-name='Py_EndInterpreter' filepath='Python/pylifecycle.c' line='2129' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_EndInterpreter'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pylifecycle.c' line='2129' column='1'/>
+ <function-decl name='Py_EndInterpreter' mangled-name='Py_EndInterpreter' filepath='Python/pylifecycle.c' line='2140' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_EndInterpreter'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pylifecycle.c' line='2140' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_Py_DumpExtensionModules' mangled-name='_Py_DumpExtensionModules' filepath='Python/pylifecycle.c' line='2708' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_DumpExtensionModules'>
- <parameter type-id='type-id-8' name='fd' filepath='Python/pylifecycle.c' line='2708' column='1'/>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pylifecycle.c' line='2708' column='1'/>
+ <function-decl name='_Py_DumpExtensionModules' mangled-name='_Py_DumpExtensionModules' filepath='Python/pylifecycle.c' line='2722' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_DumpExtensionModules'>
+ <parameter type-id='type-id-8' name='fd' filepath='Python/pylifecycle.c' line='2722' column='1'/>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pylifecycle.c' line='2722' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='Py_FatalError' mangled-name='Py_FatalError' filepath='Python/pylifecycle.c' line='2881' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_FatalError'>
- <parameter type-id='type-id-12' name='msg' filepath='Python/pylifecycle.c' line='2881' column='1'/>
+ <function-decl name='Py_FatalError' mangled-name='Py_FatalError' filepath='Python/pylifecycle.c' line='2895' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_FatalError'>
+ <parameter type-id='type-id-12' name='msg' filepath='Python/pylifecycle.c' line='2895' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_Py_FatalRefcountErrorFunc' mangled-name='_Py_FatalRefcountErrorFunc' filepath='Python/pylifecycle.c' line='2925' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_FatalRefcountErrorFunc'>
- <parameter type-id='type-id-12' name='func' filepath='Python/pylifecycle.c' line='2925' column='1'/>
- <parameter type-id='type-id-12' name='msg' filepath='Python/pylifecycle.c' line='2925' column='1'/>
+ <function-decl name='_Py_FatalRefcountErrorFunc' mangled-name='_Py_FatalRefcountErrorFunc' filepath='Python/pylifecycle.c' line='2939' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_FatalRefcountErrorFunc'>
+ <parameter type-id='type-id-12' name='func' filepath='Python/pylifecycle.c' line='2939' column='1'/>
+ <parameter type-id='type-id-12' name='msg' filepath='Python/pylifecycle.c' line='2939' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='Py_AtExit' mangled-name='Py_AtExit' filepath='Python/pylifecycle.c' line='2975' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_AtExit'>
- <parameter type-id='type-id-227' name='func' filepath='Python/pylifecycle.c' line='2975' column='1'/>
+ <function-decl name='Py_AtExit' mangled-name='Py_AtExit' filepath='Python/pylifecycle.c' line='2989' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_AtExit'>
+ <parameter type-id='type-id-227' name='func' filepath='Python/pylifecycle.c' line='2989' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='Py_Exit' mangled-name='Py_Exit' filepath='Python/pylifecycle.c' line='3012' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Exit'>
- <parameter type-id='type-id-8' name='sts' filepath='Python/pylifecycle.c' line='3012' column='1'/>
+ <function-decl name='Py_Exit' mangled-name='Py_Exit' filepath='Python/pylifecycle.c' line='3026' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_Exit'>
+ <parameter type-id='type-id-8' name='sts' filepath='Python/pylifecycle.c' line='3026' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='Py_FdIsInteractive' mangled-name='Py_FdIsInteractive' filepath='Python/pylifecycle.c' line='3029' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_FdIsInteractive'>
- <parameter type-id='type-id-229' name='fp' filepath='Python/pylifecycle.c' line='3029' column='1'/>
- <parameter type-id='type-id-12' name='filename' filepath='Python/pylifecycle.c' line='3029' column='1'/>
+ <function-decl name='Py_FdIsInteractive' mangled-name='Py_FdIsInteractive' filepath='Python/pylifecycle.c' line='3043' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='Py_FdIsInteractive'>
+ <parameter type-id='type-id-229' name='fp' filepath='Python/pylifecycle.c' line='3043' column='1'/>
+ <parameter type-id='type-id-12' name='filename' filepath='Python/pylifecycle.c' line='3043' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_Py_FdIsInteractive' mangled-name='_Py_FdIsInteractive' filepath='Python/pylifecycle.c' line='3044' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_FdIsInteractive'>
- <parameter type-id='type-id-229' name='fp' filepath='Python/pylifecycle.c' line='3044' column='1'/>
- <parameter type-id='type-id-2' name='filename' filepath='Python/pylifecycle.c' line='3044' column='1'/>
+ <function-decl name='_Py_FdIsInteractive' mangled-name='_Py_FdIsInteractive' filepath='Python/pylifecycle.c' line='3058' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Py_FdIsInteractive'>
+ <parameter type-id='type-id-229' name='fp' filepath='Python/pylifecycle.c' line='3058' column='1'/>
+ <parameter type-id='type-id-2' name='filename' filepath='Python/pylifecycle.c' line='3058' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyOS_getsig' mangled-name='PyOS_getsig' filepath='Python/pylifecycle.c' line='3061' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_getsig'>
- <parameter type-id='type-id-8' name='sig' filepath='Python/pylifecycle.c' line='3061' column='1'/>
+ <function-decl name='PyOS_getsig' mangled-name='PyOS_getsig' filepath='Python/pylifecycle.c' line='3075' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_getsig'>
+ <parameter type-id='type-id-8' name='sig' filepath='Python/pylifecycle.c' line='3075' column='1'/>
<return type-id='type-id-1486'/>
</function-decl>
- <function-decl name='PyOS_setsig' mangled-name='PyOS_setsig' filepath='Python/pylifecycle.c' line='3100' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_setsig'>
- <parameter type-id='type-id-8' name='sig' filepath='Python/pylifecycle.c' line='3100' column='1'/>
- <parameter type-id='type-id-1486' name='handler' filepath='Python/pylifecycle.c' line='3100' column='1'/>
+ <function-decl name='PyOS_setsig' mangled-name='PyOS_setsig' filepath='Python/pylifecycle.c' line='3114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyOS_setsig'>
+ <parameter type-id='type-id-8' name='sig' filepath='Python/pylifecycle.c' line='3114' column='1'/>
+ <parameter type-id='type-id-1486' name='handler' filepath='Python/pylifecycle.c' line='3114' column='1'/>
<return type-id='type-id-1486'/>
</function-decl>
</abi-instr>
@@ -25409,7 +25418,7 @@
<parameter type-id='type-id-1498'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyEval_AcquireLock' filepath='./Include/internal/pycore_ceval.h' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+ <function-decl name='_PyEval_AcquireLock' filepath='./Include/internal/pycore_ceval.h' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='type-id-177'/>
<return type-id='type-id-46'/>
</function-decl>
@@ -25454,7 +25463,7 @@
<parameter type-id='type-id-20'/>
<return type-id='type-id-46'/>
</function-decl>
- <var-decl name='_Py_tss_tstate' type-id='type-id-177' visibility='default' filepath='./Include/internal/pycore_pystate.h' line='75' column='1'/>
+ <var-decl name='_Py_tss_tstate' type-id='type-id-177' visibility='default' filepath='./Include/internal/pycore_pystate.h' line='67' column='1'/>
<function-decl name='PyThread_get_thread_native_id' mangled-name='PyThread_get_thread_native_id' filepath='./Include/pythread.h' line='27' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThread_get_thread_native_id'>
<return type-id='type-id-28'/>
</function-decl>
@@ -25469,137 +25478,137 @@
<function-decl name='_PyThreadState_GetCurrent' mangled-name='_PyThreadState_GetCurrent' filepath='Python/pystate.c' line='108' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_GetCurrent'>
<return type-id='type-id-177'/>
</function-decl>
- <function-decl name='PyInterpreterState_Clear' mangled-name='PyInterpreterState_Clear' filepath='Python/pystate.c' line='919' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_Clear'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='919' column='1'/>
+ <function-decl name='PyInterpreterState_Clear' mangled-name='PyInterpreterState_Clear' filepath='Python/pystate.c' line='920' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_Clear'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='920' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyInterpreterState_RequiresIDRef' mangled-name='_PyInterpreterState_RequiresIDRef' filepath='Python/pystate.c' line='1115' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_RequiresIDRef'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1115' column='1'/>
+ <function-decl name='_PyInterpreterState_RequiresIDRef' mangled-name='_PyInterpreterState_RequiresIDRef' filepath='Python/pystate.c' line='1116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_RequiresIDRef'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1116' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyInterpreterState_RequireIDRef' mangled-name='_PyInterpreterState_RequireIDRef' filepath='Python/pystate.c' line='1121' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_RequireIDRef'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1121' column='1'/>
- <parameter type-id='type-id-8' name='required' filepath='Python/pystate.c' line='1121' column='1'/>
+ <function-decl name='_PyInterpreterState_RequireIDRef' mangled-name='_PyInterpreterState_RequireIDRef' filepath='Python/pystate.c' line='1122' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_RequireIDRef'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1122' column='1'/>
+ <parameter type-id='type-id-8' name='required' filepath='Python/pystate.c' line='1122' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyInterpreterState_GetMainModule' mangled-name='_PyInterpreterState_GetMainModule' filepath='Python/pystate.c' line='1127' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetMainModule'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1127' column='1'/>
+ <function-decl name='_PyInterpreterState_GetMainModule' mangled-name='_PyInterpreterState_GetMainModule' filepath='Python/pystate.c' line='1128' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetMainModule'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1128' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyInterpreterState_GetDict' mangled-name='PyInterpreterState_GetDict' filepath='Python/pystate.c' line='1138' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_GetDict'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1138' column='1'/>
+ <function-decl name='PyInterpreterState_GetDict' mangled-name='PyInterpreterState_GetDict' filepath='Python/pystate.c' line='1139' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_GetDict'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1139' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyThreadState_New' mangled-name='PyThreadState_New' filepath='Python/pystate.c' line='1380' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_New'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1380' column='1'/>
+ <function-decl name='PyThreadState_New' mangled-name='PyThreadState_New' filepath='Python/pystate.c' line='1381' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_New'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1381' column='1'/>
<return type-id='type-id-177'/>
</function-decl>
- <function-decl name='_PyThreadState_Prealloc' mangled-name='_PyThreadState_Prealloc' filepath='Python/pystate.c' line='1403' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Prealloc'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1403' column='1'/>
+ <function-decl name='_PyThreadState_Prealloc' mangled-name='_PyThreadState_Prealloc' filepath='Python/pystate.c' line='1404' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Prealloc'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='1404' column='1'/>
<return type-id='type-id-177'/>
</function-decl>
- <function-decl name='_PyThreadState_Init' mangled-name='_PyThreadState_Init' filepath='Python/pystate.c' line='1411' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Init'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1411' column='1'/>
+ <function-decl name='_PyThreadState_Init' mangled-name='_PyThreadState_Init' filepath='Python/pystate.c' line='1412' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_Init'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1412' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_DeleteCurrent' mangled-name='_PyThreadState_DeleteCurrent' filepath='Python/pystate.c' line='1573' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_DeleteCurrent'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1573' column='1'/>
+ <function-decl name='_PyThreadState_DeleteCurrent' mangled-name='_PyThreadState_DeleteCurrent' filepath='Python/pystate.c' line='1574' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_DeleteCurrent'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1574' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='PyThreadState_DeleteCurrent' mangled-name='PyThreadState_DeleteCurrent' filepath='Python/pystate.c' line='1583' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_DeleteCurrent'>
+ <function-decl name='PyThreadState_DeleteCurrent' mangled-name='PyThreadState_DeleteCurrent' filepath='Python/pystate.c' line='1584' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_DeleteCurrent'>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyThreadState_GetDict' mangled-name='_PyThreadState_GetDict' filepath='Python/pystate.c' line='1714' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_GetDict'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1714' column='1'/>
+ <function-decl name='_PyThreadState_GetDict' mangled-name='_PyThreadState_GetDict' filepath='Python/pystate.c' line='1715' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThreadState_GetDict'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1715' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='PyThreadState_GetInterpreter' mangled-name='PyThreadState_GetInterpreter' filepath='Python/pystate.c' line='1739' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_GetInterpreter'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1739' column='1'/>
+ <function-decl name='PyThreadState_GetInterpreter' mangled-name='PyThreadState_GetInterpreter' filepath='Python/pystate.c' line='1740' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_GetInterpreter'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1740' column='1'/>
<return type-id='type-id-20'/>
</function-decl>
- <function-decl name='PyThreadState_GetID' mangled-name='PyThreadState_GetID' filepath='Python/pystate.c' line='1763' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_GetID'>
- <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1763' column='1'/>
+ <function-decl name='PyThreadState_GetID' mangled-name='PyThreadState_GetID' filepath='Python/pystate.c' line='1764' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_GetID'>
+ <parameter type-id='type-id-177' name='tstate' filepath='Python/pystate.c' line='1764' column='1'/>
<return type-id='type-id-117'/>
</function-decl>
- <function-decl name='PyThreadState_SetAsyncExc' mangled-name='PyThreadState_SetAsyncExc' filepath='Python/pystate.c' line='1817' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_SetAsyncExc'>
- <parameter type-id='type-id-28' name='id' filepath='Python/pystate.c' line='1817' column='1'/>
- <parameter type-id='type-id-2' name='exc' filepath='Python/pystate.c' line='1817' column='1'/>
+ <function-decl name='PyThreadState_SetAsyncExc' mangled-name='PyThreadState_SetAsyncExc' filepath='Python/pystate.c' line='1818' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyThreadState_SetAsyncExc'>
+ <parameter type-id='type-id-28' name='id' filepath='Python/pystate.c' line='1818' column='1'/>
+ <parameter type-id='type-id-2' name='exc' filepath='Python/pystate.c' line='1818' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='PyInterpreterState_Main' mangled-name='PyInterpreterState_Main' filepath='Python/pystate.c' line='1960' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_Main'>
+ <function-decl name='PyInterpreterState_Main' mangled-name='PyInterpreterState_Main' filepath='Python/pystate.c' line='1961' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='PyInterpreterState_Main'>
<return type-id='type-id-20'/>
</function-decl>
- <function-decl name='_PyThread_CurrentFrames' mangled-name='_PyThread_CurrentFrames' filepath='Python/pystate.c' line='1991' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThread_CurrentFrames'>
+ <function-decl name='_PyThread_CurrentFrames' mangled-name='_PyThread_CurrentFrames' filepath='Python/pystate.c' line='1992' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThread_CurrentFrames'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyThread_CurrentExceptions' mangled-name='_PyThread_CurrentExceptions' filepath='Python/pystate.c' line='2052' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThread_CurrentExceptions'>
+ <function-decl name='_PyThread_CurrentExceptions' mangled-name='_PyThread_CurrentExceptions' filepath='Python/pystate.c' line='2053' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyThread_CurrentExceptions'>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyGILState_GetInterpreterStateUnsafe' mangled-name='_PyGILState_GetInterpreterStateUnsafe' filepath='Python/pystate.c' line='2170' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyGILState_GetInterpreterStateUnsafe'>
+ <function-decl name='_PyGILState_GetInterpreterStateUnsafe' mangled-name='_PyGILState_GetInterpreterStateUnsafe' filepath='Python/pystate.c' line='2171' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyGILState_GetInterpreterStateUnsafe'>
<return type-id='type-id-20'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_Init' mangled-name='_PyCrossInterpreterData_Init' filepath='Python/pystate.c' line='2333' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Init'>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2333' column='1'/>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2334' column='1'/>
- <parameter type-id='type-id-22' name='shared' filepath='Python/pystate.c' line='2335' column='1'/>
- <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2335' column='1'/>
- <parameter type-id='type-id-782' name='new_object' filepath='Python/pystate.c' line='2336' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_Init' mangled-name='_PyCrossInterpreterData_Init' filepath='Python/pystate.c' line='2334' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Init'>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2334' column='1'/>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2335' column='1'/>
+ <parameter type-id='type-id-22' name='shared' filepath='Python/pystate.c' line='2336' column='1'/>
+ <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2336' column='1'/>
+ <parameter type-id='type-id-782' name='new_object' filepath='Python/pystate.c' line='2337' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_InitWithSize' mangled-name='_PyCrossInterpreterData_InitWithSize' filepath='Python/pystate.c' line='2355' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_InitWithSize'>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2355' column='1'/>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2356' column='1'/>
- <parameter type-id='type-id-1500' name='size' filepath='Python/pystate.c' line='2357' column='1'/>
- <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2357' column='1'/>
- <parameter type-id='type-id-782' name='new_object' filepath='Python/pystate.c' line='2358' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_InitWithSize' mangled-name='_PyCrossInterpreterData_InitWithSize' filepath='Python/pystate.c' line='2356' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_InitWithSize'>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2356' column='1'/>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2357' column='1'/>
+ <parameter type-id='type-id-1500' name='size' filepath='Python/pystate.c' line='2358' column='1'/>
+ <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2358' column='1'/>
+ <parameter type-id='type-id-782' name='new_object' filepath='Python/pystate.c' line='2359' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_Clear' mangled-name='_PyCrossInterpreterData_Clear' filepath='Python/pystate.c' line='2374' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Clear'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2374' column='1'/>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2375' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_Clear' mangled-name='_PyCrossInterpreterData_Clear' filepath='Python/pystate.c' line='2375' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Clear'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2375' column='1'/>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2376' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyObject_CheckCrossInterpreterData' mangled-name='_PyObject_CheckCrossInterpreterData' filepath='Python/pystate.c' line='2420' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyObject_CheckCrossInterpreterData'>
- <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2420' column='1'/>
+ <function-decl name='_PyObject_CheckCrossInterpreterData' mangled-name='_PyObject_CheckCrossInterpreterData' filepath='Python/pystate.c' line='2421' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyObject_CheckCrossInterpreterData'>
+ <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2421' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyObject_GetCrossInterpreterData' mangled-name='_PyObject_GetCrossInterpreterData' filepath='Python/pystate.c' line='2430' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyObject_GetCrossInterpreterData'>
- <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2430' column='1'/>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2430' column='1'/>
+ <function-decl name='_PyObject_GetCrossInterpreterData' mangled-name='_PyObject_GetCrossInterpreterData' filepath='Python/pystate.c' line='2431' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyObject_GetCrossInterpreterData'>
+ <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2431' column='1'/>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2431' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_NewObject' mangled-name='_PyCrossInterpreterData_NewObject' filepath='Python/pystate.c' line='2468' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_NewObject'>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2468' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_NewObject' mangled-name='_PyCrossInterpreterData_NewObject' filepath='Python/pystate.c' line='2469' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_NewObject'>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2469' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_Release' mangled-name='_PyCrossInterpreterData_Release' filepath='Python/pystate.c' line='2502' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Release'>
- <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2502' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_Release' mangled-name='_PyCrossInterpreterData_Release' filepath='Python/pystate.c' line='2503' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Release'>
+ <parameter type-id='type-id-1057' name='data' filepath='Python/pystate.c' line='2503' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_RegisterClass' mangled-name='_PyCrossInterpreterData_RegisterClass' filepath='Python/pystate.c' line='2603' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_RegisterClass'>
- <parameter type-id='type-id-1' name='cls' filepath='Python/pystate.c' line='2603' column='1'/>
- <parameter type-id='type-id-785' name='getdata' filepath='Python/pystate.c' line='2604' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_RegisterClass' mangled-name='_PyCrossInterpreterData_RegisterClass' filepath='Python/pystate.c' line='2604' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_RegisterClass'>
+ <parameter type-id='type-id-1' name='cls' filepath='Python/pystate.c' line='2604' column='1'/>
+ <parameter type-id='type-id-785' name='getdata' filepath='Python/pystate.c' line='2605' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_UnregisterClass' mangled-name='_PyCrossInterpreterData_UnregisterClass' filepath='Python/pystate.c' line='2626' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_UnregisterClass'>
- <parameter type-id='type-id-1' name='cls' filepath='Python/pystate.c' line='2626' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_UnregisterClass' mangled-name='_PyCrossInterpreterData_UnregisterClass' filepath='Python/pystate.c' line='2627' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_UnregisterClass'>
+ <parameter type-id='type-id-1' name='cls' filepath='Python/pystate.c' line='2627' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
- <function-decl name='_PyCrossInterpreterData_Lookup' mangled-name='_PyCrossInterpreterData_Lookup' filepath='Python/pystate.c' line='2646' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Lookup'>
- <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2646' column='1'/>
+ <function-decl name='_PyCrossInterpreterData_Lookup' mangled-name='_PyCrossInterpreterData_Lookup' filepath='Python/pystate.c' line='2647' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyCrossInterpreterData_Lookup'>
+ <parameter type-id='type-id-2' name='obj' filepath='Python/pystate.c' line='2647' column='1'/>
<return type-id='type-id-785'/>
</function-decl>
- <function-decl name='_PyInterpreterState_GetEvalFrameFunc' mangled-name='_PyInterpreterState_GetEvalFrameFunc' filepath='Python/pystate.c' line='2795' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetEvalFrameFunc'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2795' column='1'/>
+ <function-decl name='_PyInterpreterState_GetEvalFrameFunc' mangled-name='_PyInterpreterState_GetEvalFrameFunc' filepath='Python/pystate.c' line='2796' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetEvalFrameFunc'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2796' column='1'/>
<return type-id='type-id-778'/>
</function-decl>
- <function-decl name='_PyInterpreterState_SetEvalFrameFunc' mangled-name='_PyInterpreterState_SetEvalFrameFunc' filepath='Python/pystate.c' line='2805' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_SetEvalFrameFunc'>
- <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2805' column='1'/>
- <parameter type-id='type-id-778' name='eval_frame' filepath='Python/pystate.c' line='2806' column='1'/>
+ <function-decl name='_PyInterpreterState_SetEvalFrameFunc' mangled-name='_PyInterpreterState_SetEvalFrameFunc' filepath='Python/pystate.c' line='2806' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_SetEvalFrameFunc'>
+ <parameter type-id='type-id-20' name='interp' filepath='Python/pystate.c' line='2806' column='1'/>
+ <parameter type-id='type-id-778' name='eval_frame' filepath='Python/pystate.c' line='2807' column='1'/>
<return type-id='type-id-46'/>
</function-decl>
- <function-decl name='_PyInterpreterState_GetConfigCopy' mangled-name='_PyInterpreterState_GetConfigCopy' filepath='Python/pystate.c' line='2825' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetConfigCopy'>
- <parameter type-id='type-id-53' name='config' filepath='Python/pystate.c' line='2825' column='1'/>
+ <function-decl name='_PyInterpreterState_GetConfigCopy' mangled-name='_PyInterpreterState_GetConfigCopy' filepath='Python/pystate.c' line='2826' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_PyInterpreterState_GetConfigCopy'>
+ <parameter type-id='type-id-53' name='config' filepath='Python/pystate.c' line='2826' column='1'/>
<return type-id='type-id-8'/>
</function-decl>
</abi-instr>
diff --git a/Include/cpython/ceval.h b/Include/cpython/ceval.h
index 0fbbee1..a9616bd 100644
--- a/Include/cpython/ceval.h
+++ b/Include/cpython/ceval.h
@@ -22,6 +22,8 @@ PyAPI_FUNC(PyObject *) _PyEval_EvalFrameDefault(PyThreadState *tstate, struct _P
PyAPI_FUNC(void) _PyEval_SetSwitchInterval(unsigned long microseconds);
PyAPI_FUNC(unsigned long) _PyEval_GetSwitchInterval(void);
+PyAPI_FUNC(int) _PyEval_MakePendingCalls(PyThreadState *);
+
PyAPI_FUNC(Py_ssize_t) PyUnstable_Eval_RequestCodeExtraIndex(freefunc);
// Old name -- remove when this API changes:
_Py_DEPRECATED_EXTERNALLY(3.12) static inline Py_ssize_t
diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h
index ca27037..9e9b523 100644
--- a/Include/internal/pycore_ceval.h
+++ b/Include/internal/pycore_ceval.h
@@ -27,7 +27,8 @@ PyAPI_FUNC(void) _PyEval_SignalReceived(PyInterpreterState *interp);
PyAPI_FUNC(int) _PyEval_AddPendingCall(
PyInterpreterState *interp,
int (*func)(void *),
- void *arg);
+ void *arg,
+ int mainthreadonly);
PyAPI_FUNC(void) _PyEval_SignalAsyncExc(PyInterpreterState *interp);
#ifdef HAVE_FORK
extern PyStatus _PyEval_ReInitThreads(PyThreadState *tstate);
diff --git a/Include/internal/pycore_ceval_state.h b/Include/internal/pycore_ceval_state.h
index 95d1fa1..e56e43c 100644
--- a/Include/internal/pycore_ceval_state.h
+++ b/Include/internal/pycore_ceval_state.h
@@ -13,6 +13,24 @@ extern "C" {
#include "pycore_gil.h" // struct _gil_runtime_state
+struct _pending_calls {
+ int busy;
+ PyThread_type_lock lock;
+ /* Request for running pending calls. */
+ _Py_atomic_int calls_to_do;
+ /* Request for looking at the `async_exc` field of the current
+ thread state.
+ Guarded by the GIL. */
+ int async_exc;
+#define NPENDINGCALLS 32
+ struct _pending_call {
+ int (*func)(void *);
+ void *arg;
+ } calls[NPENDINGCALLS];
+ int first;
+ int last;
+};
+
typedef enum {
PERF_STATUS_FAILED = -1, // Perf trampoline is in an invalid state
PERF_STATUS_NO_INIT = 0, // Perf trampoline is not initialized
@@ -49,6 +67,8 @@ struct _ceval_runtime_state {
the main thread of the main interpreter can handle signals: see
_Py_ThreadCanHandleSignals(). */
_Py_atomic_int signals_pending;
+ /* Pending calls to be made only on the main thread. */
+ struct _pending_calls pending_mainthread;
};
#ifdef PY_HAVE_PERF_TRAMPOLINE
@@ -62,24 +82,6 @@ struct _ceval_runtime_state {
#endif
-struct _pending_calls {
- int busy;
- PyThread_type_lock lock;
- /* Request for running pending calls. */
- _Py_atomic_int calls_to_do;
- /* Request for looking at the `async_exc` field of the current
- thread state.
- Guarded by the GIL. */
- int async_exc;
-#define NPENDINGCALLS 32
- struct {
- int (*func)(void *);
- void *arg;
- } calls[NPENDINGCALLS];
- int first;
- int last;
-};
-
struct _ceval_state {
/* This single variable consolidates all requests to break out of
the fast path in the eval loop. */
diff --git a/Include/internal/pycore_pystate.h b/Include/internal/pycore_pystate.h
index daa40cf..43652c4 100644
--- a/Include/internal/pycore_pystate.h
+++ b/Include/internal/pycore_pystate.h
@@ -60,14 +60,6 @@ _Py_ThreadCanHandleSignals(PyInterpreterState *interp)
}
-/* Only execute pending calls on the main thread. */
-static inline int
-_Py_ThreadCanHandlePendingCalls(void)
-{
- return _Py_IsMainThread();
-}
-
-
/* Variable and static inline functions for in-line access to current thread
and interpreter state */
diff --git a/Lib/test/support/threading_helper.py b/Lib/test/support/threading_helper.py
index b9973c8..7f16050 100644
--- a/Lib/test/support/threading_helper.py
+++ b/Lib/test/support/threading_helper.py
@@ -115,7 +115,11 @@ def join_thread(thread, timeout=None):
@contextlib.contextmanager
def start_threads(threads, unlock=None):
- import faulthandler
+ try:
+ import faulthandler
+ except ImportError:
+ # It isn't supported on subinterpreters yet.
+ faulthandler = None
threads = list(threads)
started = []
try:
@@ -147,7 +151,8 @@ def start_threads(threads, unlock=None):
finally:
started = [t for t in started if t.is_alive()]
if started:
- faulthandler.dump_traceback(sys.stdout)
+ if faulthandler is not None:
+ faulthandler.dump_traceback(sys.stdout)
raise AssertionError('Unable to join %d threads' % len(started))
diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py
index 9cd1554..61947cb 100644
--- a/Lib/test/test_capi/test_misc.py
+++ b/Lib/test/test_capi/test_misc.py
@@ -2,18 +2,21 @@
# these are all functions _testcapi exports whose name begins with 'test_'.
import _thread
-from collections import OrderedDict
+from collections import OrderedDict, deque
import contextlib
import importlib.machinery
import importlib.util
+import json
import os
import pickle
+import queue
import random
import subprocess
import sys
import textwrap
import threading
import time
+import types
import unittest
import warnings
import weakref
@@ -37,6 +40,10 @@ try:
import _testsinglephase
except ImportError:
_testsinglephase = None
+try:
+ import _xxsubinterpreters as _interpreters
+except ModuleNotFoundError:
+ _interpreters = None
# Skip this test if the _testcapi module isn't available.
_testcapi = import_helper.import_module('_testcapi')
@@ -48,6 +55,12 @@ def decode_stderr(err):
return err.decode('utf-8', 'replace').replace('\r', '')
+def requires_subinterpreters(meth):
+ """Decorator to skip a test if subinterpreters are not supported."""
+ return unittest.skipIf(_interpreters is None,
+ 'subinterpreters required')(meth)
+
+
def testfunction(self):
"""some doc"""
return self
@@ -1260,6 +1273,10 @@ class TestHeapTypeRelative(unittest.TestCase):
class TestPendingCalls(unittest.TestCase):
+ # See the comment in ceval.c (at the "handle_eval_breaker" label)
+ # about when pending calls get run. This is especially relevant
+ # here for creating deterministic tests.
+
def pendingcalls_submit(self, l, n):
def callback():
#this function can be interrupted by thread switching so let's
@@ -1342,6 +1359,390 @@ class TestPendingCalls(unittest.TestCase):
gen = genf()
self.assertEqual(_testcapi.gen_get_code(gen), gen.gi_code)
+ class PendingTask(types.SimpleNamespace):
+
+ _add_pending = _testinternalcapi.pending_threadfunc
+
+ def __init__(self, req, taskid=None, notify_done=None):
+ self.id = taskid
+ self.req = req
+ self.notify_done = notify_done
+
+ self.creator_tid = threading.get_ident()
+ self.requester_tid = None
+ self.runner_tid = None
+ self.result = None
+
+ def run(self):
+ assert self.result is None
+ self.runner_tid = threading.get_ident()
+ self._run()
+ if self.notify_done is not None:
+ self.notify_done()
+
+ def _run(self):
+ self.result = self.req
+
+ def run_in_pending_call(self, worker_tids):
+ assert self._add_pending is _testinternalcapi.pending_threadfunc
+ self.requester_tid = threading.get_ident()
+ def callback():
+ assert self.result is None
+ # It can be tricky to control which thread handles
+ # the eval breaker, so we take a naive approach to
+ # make sure.
+ if threading.get_ident() not in worker_tids:
+ self._add_pending(callback, ensure_added=True)
+ return
+ self.run()
+ self._add_pending(callback, ensure_added=True)
+
+ def create_thread(self, worker_tids):
+ return threading.Thread(
+ target=self.run_in_pending_call,
+ args=(worker_tids,),
+ )
+
+ def wait_for_result(self):
+ while self.result is None:
+ time.sleep(0.01)
+
+ @threading_helper.requires_working_threading()
+ def test_subthreads_can_handle_pending_calls(self):
+ payload = 'Spam spam spam spam. Lovely spam! Wonderful spam!'
+
+ task = self.PendingTask(payload)
+ def do_the_work():
+ tid = threading.get_ident()
+ t = task.create_thread({tid})
+ with threading_helper.start_threads([t]):
+ task.wait_for_result()
+ t = threading.Thread(target=do_the_work)
+ with threading_helper.start_threads([t]):
+ pass
+
+ self.assertEqual(task.result, payload)
+
+ @threading_helper.requires_working_threading()
+ def test_many_subthreads_can_handle_pending_calls(self):
+ main_tid = threading.get_ident()
+ self.assertEqual(threading.main_thread().ident, main_tid)
+
+ # We can't use queue.Queue since it isn't reentrant relative
+ # to pending calls.
+ _queue = deque()
+ _active = deque()
+ _done_lock = threading.Lock()
+ def queue_put(task):
+ _queue.append(task)
+ _active.append(True)
+ def queue_get():
+ try:
+ task = _queue.popleft()
+ except IndexError:
+ raise queue.Empty
+ return task
+ def queue_task_done():
+ _active.pop()
+ if not _active:
+ try:
+ _done_lock.release()
+ except RuntimeError:
+ assert not _done_lock.locked()
+ def queue_empty():
+ return not _queue
+ def queue_join():
+ _done_lock.acquire()
+ _done_lock.release()
+
+ tasks = []
+ for i in range(20):
+ task = self.PendingTask(
+ req=f'request {i}',
+ taskid=i,
+ notify_done=queue_task_done,
+ )
+ tasks.append(task)
+ queue_put(task)
+ # This will be released once all the tasks have finished.
+ _done_lock.acquire()
+
+ def add_tasks(worker_tids):
+ while True:
+ if done:
+ return
+ try:
+ task = queue_get()
+ except queue.Empty:
+ break
+ task.run_in_pending_call(worker_tids)
+
+ done = False
+ def run_tasks():
+ while not queue_empty():
+ if done:
+ return
+ time.sleep(0.01)
+ # Give the worker a chance to handle any remaining pending calls.
+ while not done:
+ time.sleep(0.01)
+
+ # Start the workers and wait for them to finish.
+ worker_threads = [threading.Thread(target=run_tasks)
+ for _ in range(3)]
+ with threading_helper.start_threads(worker_threads):
+ try:
+ # Add a pending call for each task.
+ worker_tids = [t.ident for t in worker_threads]
+ threads = [threading.Thread(target=add_tasks, args=(worker_tids,))
+ for _ in range(3)]
+ with threading_helper.start_threads(threads):
+ try:
+ pass
+ except BaseException:
+ done = True
+ raise # re-raise
+ # Wait for the pending calls to finish.
+ queue_join()
+ # Notify the workers that they can stop.
+ done = True
+ except BaseException:
+ done = True
+ raise # re-raise
+ runner_tids = [t.runner_tid for t in tasks]
+
+ self.assertNotIn(main_tid, runner_tids)
+ for task in tasks:
+ with self.subTest(f'task {task.id}'):
+ self.assertNotEqual(task.requester_tid, main_tid)
+ self.assertNotEqual(task.requester_tid, task.runner_tid)
+ self.assertNotIn(task.requester_tid, runner_tids)
+
+ @requires_subinterpreters
+ def test_isolated_subinterpreter(self):
+ # We exercise the most important permutations.
+
+ # This test relies on pending calls getting called
+ # (eval breaker tripped) at each loop iteration
+ # and at each call.
+
+ maxtext = 250
+ main_interpid = 0
+ interpid = _interpreters.create()
+ _interpreters.run_string(interpid, f"""if True:
+ import json
+ import os
+ import threading
+ import time
+ import _testinternalcapi
+ from test.support import threading_helper
+ """)
+
+ def create_pipe():
+ r, w = os.pipe()
+ self.addCleanup(lambda: os.close(r))
+ self.addCleanup(lambda: os.close(w))
+ return r, w
+
+ with self.subTest('add in main, run in subinterpreter'):
+ r_ready, w_ready = create_pipe()
+ r_done, w_done= create_pipe()
+ timeout = time.time() + 30 # seconds
+
+ def do_work():
+ _interpreters.run_string(interpid, f"""if True:
+ # Wait until this interp has handled the pending call.
+ waiting = False
+ done = False
+ def wait(os_read=os.read):
+ global done, waiting
+ waiting = True
+ os_read({r_done}, 1)
+ done = True
+ t = threading.Thread(target=wait)
+ with threading_helper.start_threads([t]):
+ while not waiting:
+ pass
+ os.write({w_ready}, b'\\0')
+ # Loop to trigger the eval breaker.
+ while not done:
+ time.sleep(0.01)
+ if time.time() > {timeout}:
+ raise Exception('timed out!')
+ """)
+ t = threading.Thread(target=do_work)
+ with threading_helper.start_threads([t]):
+ os.read(r_ready, 1)
+ # Add the pending call and wait for it to finish.
+ actual = _testinternalcapi.pending_identify(interpid)
+ # Signal the subinterpreter to stop.
+ os.write(w_done, b'\0')
+
+ self.assertEqual(actual, int(interpid))
+
+ with self.subTest('add in main, run in subinterpreter sub-thread'):
+ r_ready, w_ready = create_pipe()
+ r_done, w_done= create_pipe()
+ timeout = time.time() + 30 # seconds
+
+ def do_work():
+ _interpreters.run_string(interpid, f"""if True:
+ waiting = False
+ done = False
+ def subthread():
+ while not waiting:
+ pass
+ os.write({w_ready}, b'\\0')
+ # Loop to trigger the eval breaker.
+ while not done:
+ time.sleep(0.01)
+ if time.time() > {timeout}:
+ raise Exception('timed out!')
+ t = threading.Thread(target=subthread)
+ with threading_helper.start_threads([t]):
+ # Wait until this interp has handled the pending call.
+ waiting = True
+ os.read({r_done}, 1)
+ done = True
+ """)
+ t = threading.Thread(target=do_work)
+ with threading_helper.start_threads([t]):
+ os.read(r_ready, 1)
+ # Add the pending call and wait for it to finish.
+ actual = _testinternalcapi.pending_identify(interpid)
+ # Signal the subinterpreter to stop.
+ os.write(w_done, b'\0')
+
+ self.assertEqual(actual, int(interpid))
+
+ with self.subTest('add in subinterpreter, run in main'):
+ r_ready, w_ready = create_pipe()
+ r_done, w_done= create_pipe()
+ r_data, w_data= create_pipe()
+ timeout = time.time() + 30 # seconds
+
+ def add_job():
+ os.read(r_ready, 1)
+ _interpreters.run_string(interpid, f"""if True:
+ # Add the pending call and wait for it to finish.
+ actual = _testinternalcapi.pending_identify({main_interpid})
+ # Signal the subinterpreter to stop.
+ os.write({w_done}, b'\\0')
+ os.write({w_data}, actual.to_bytes(1, 'little'))
+ """)
+ # Wait until this interp has handled the pending call.
+ waiting = False
+ done = False
+ def wait(os_read=os.read):
+ nonlocal done, waiting
+ waiting = True
+ os_read(r_done, 1)
+ done = True
+ t1 = threading.Thread(target=add_job)
+ t2 = threading.Thread(target=wait)
+ with threading_helper.start_threads([t1, t2]):
+ while not waiting:
+ pass
+ os.write(w_ready, b'\0')
+ # Loop to trigger the eval breaker.
+ while not done:
+ time.sleep(0.01)
+ if time.time() > timeout:
+ raise Exception('timed out!')
+ text = os.read(r_data, 1)
+ actual = int.from_bytes(text, 'little')
+
+ self.assertEqual(actual, int(main_interpid))
+
+ with self.subTest('add in subinterpreter, run in sub-thread'):
+ r_ready, w_ready = create_pipe()
+ r_done, w_done= create_pipe()
+ r_data, w_data= create_pipe()
+ timeout = time.time() + 30 # seconds
+
+ def add_job():
+ os.read(r_ready, 1)
+ _interpreters.run_string(interpid, f"""if True:
+ # Add the pending call and wait for it to finish.
+ actual = _testinternalcapi.pending_identify({main_interpid})
+ # Signal the subinterpreter to stop.
+ os.write({w_done}, b'\\0')
+ os.write({w_data}, actual.to_bytes(1, 'little'))
+ """)
+ # Wait until this interp has handled the pending call.
+ waiting = False
+ done = False
+ def wait(os_read=os.read):
+ nonlocal done, waiting
+ waiting = True
+ os_read(r_done, 1)
+ done = True
+ def subthread():
+ while not waiting:
+ pass
+ os.write(w_ready, b'\0')
+ # Loop to trigger the eval breaker.
+ while not done:
+ time.sleep(0.01)
+ if time.time() > timeout:
+ raise Exception('timed out!')
+ t1 = threading.Thread(target=add_job)
+ t2 = threading.Thread(target=wait)
+ t3 = threading.Thread(target=subthread)
+ with threading_helper.start_threads([t1, t2, t3]):
+ pass
+ text = os.read(r_data, 1)
+ actual = int.from_bytes(text, 'little')
+
+ self.assertEqual(actual, int(main_interpid))
+
+ # XXX We can't use the rest until gh-105716 is fixed.
+ return
+
+ with self.subTest('add in subinterpreter, run in subinterpreter sub-thread'):
+ r_ready, w_ready = create_pipe()
+ r_done, w_done= create_pipe()
+ r_data, w_data= create_pipe()
+ timeout = time.time() + 30 # seconds
+
+ def do_work():
+ _interpreters.run_string(interpid, f"""if True:
+ waiting = False
+ done = False
+ def subthread():
+ while not waiting:
+ pass
+ os.write({w_ready}, b'\\0')
+ # Loop to trigger the eval breaker.
+ while not done:
+ time.sleep(0.01)
+ if time.time() > {timeout}:
+ raise Exception('timed out!')
+ t = threading.Thread(target=subthread)
+ with threading_helper.start_threads([t]):
+ # Wait until this interp has handled the pending call.
+ waiting = True
+ os.read({r_done}, 1)
+ done = True
+ """)
+ t = threading.Thread(target=do_work)
+ #with threading_helper.start_threads([t]):
+ t.start()
+ if True:
+ os.read(r_ready, 1)
+ _interpreters.run_string(interpid, f"""if True:
+ # Add the pending call and wait for it to finish.
+ actual = _testinternalcapi.pending_identify({interpid})
+ # Signal the subinterpreter to stop.
+ os.write({w_done}, b'\\0')
+ os.write({w_data}, actual.to_bytes(1, 'little'))
+ """)
+ t.join()
+ text = os.read(r_data, 1)
+ actual = int.from_bytes(text, 'little')
+
+ self.assertEqual(actual, int(interpid))
+
class SubinterpreterTest(unittest.TestCase):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-06-02-15-15-41.gh-issue-104812.dfZiG5.rst b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-15-15-41.gh-issue-104812.dfZiG5.rst
new file mode 100644
index 0000000..da29a8c
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-06-02-15-15-41.gh-issue-104812.dfZiG5.rst
@@ -0,0 +1,9 @@
+The "pending call" machinery now works for all interpreters, not just the
+main interpreter, and runs in all threads, not just the main thread. Some
+calls are still only done in the main thread, ergo in the main interpreter.
+This change does not affect signal handling nor the existing public C-API
+(``Py_AddPendingCall()``), which both still only target the main thread.
+The new functionality is meant strictly for internal use for now, since
+consequences of its use are not well understood yet outside some very
+restricted cases. This change brings the capability in line with the
+intention when the state was made per-interpreter several years ago.
diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c
index d36a911..db5be84 100644
--- a/Modules/_queuemodule.c
+++ b/Modules/_queuemodule.c
@@ -210,6 +210,7 @@ _queue_SimpleQueue_get_impl(simplequeueobject *self, PyTypeObject *cls,
PyObject *item;
PyLockStatus r;
PY_TIMEOUT_T microseconds;
+ PyThreadState *tstate = PyThreadState_Get();
if (block == 0) {
/* Non-blocking */
@@ -253,7 +254,7 @@ _queue_SimpleQueue_get_impl(simplequeueobject *self, PyTypeObject *cls,
Py_END_ALLOW_THREADS
}
- if (r == PY_LOCK_INTR && Py_MakePendingCalls() < 0) {
+ if (r == PY_LOCK_INTR && _PyEval_MakePendingCalls(tstate) < 0) {
return NULL;
}
if (r == PY_LOCK_FAILURE) {
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index 8267dbf..7e2def7 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -16,13 +16,15 @@
#include "pycore_atomic_funcs.h" // _Py_atomic_int_get()
#include "pycore_bitutils.h" // _Py_bswap32()
#include "pycore_compile.h" // _PyCompile_CodeGen, _PyCompile_OptimizeCfg, _PyCompile_Assemble
+#include "pycore_ceval.h" // _PyEval_AddPendingCall
#include "pycore_fileutils.h" // _Py_normpath
#include "pycore_frame.h" // _PyInterpreterFrame
#include "pycore_gc.h" // PyGC_Head
#include "pycore_hashtable.h" // _Py_hashtable_new()
#include "pycore_initconfig.h" // _Py_GetConfigsAsDict()
-#include "pycore_pathconfig.h" // _PyPathConfig_ClearGlobal()
#include "pycore_interp.h" // _PyInterpreterState_GetConfigCopy()
+#include "pycore_interpreteridobject.h" // _PyInterpreterID_LookUp()
+#include "pycore_pathconfig.h" // _PyPathConfig_ClearGlobal()
#include "pycore_pyerrors.h" // _Py_UTF8_Edit_Cost()
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "osdefs.h" // MAXPATHLEN
@@ -822,6 +824,120 @@ iframe_getlasti(PyObject *self, PyObject *frame)
return PyLong_FromLong(PyUnstable_InterpreterFrame_GetLasti(f));
}
+
+static int _pending_callback(void *arg)
+{
+ /* we assume the argument is callable object to which we own a reference */
+ PyObject *callable = (PyObject *)arg;
+ PyObject *r = PyObject_CallNoArgs(callable);
+ Py_DECREF(callable);
+ Py_XDECREF(r);
+ return r != NULL ? 0 : -1;
+}
+
+/* The following requests n callbacks to _pending_callback. It can be
+ * run from any python thread.
+ */
+static PyObject *
+pending_threadfunc(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ PyObject *callable;
+ int ensure_added = 0;
+ static char *kwlist[] = {"", "ensure_added", NULL};
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ "O|$p:pending_threadfunc", kwlist,
+ &callable, &ensure_added))
+ {
+ return NULL;
+ }
+ PyInterpreterState *interp = PyInterpreterState_Get();
+
+ /* create the reference for the callbackwhile we hold the lock */
+ Py_INCREF(callable);
+
+ int r;
+ Py_BEGIN_ALLOW_THREADS
+ r = _PyEval_AddPendingCall(interp, &_pending_callback, callable, 0);
+ Py_END_ALLOW_THREADS
+ if (r < 0) {
+ /* unsuccessful add */
+ if (!ensure_added) {
+ Py_DECREF(callable);
+ Py_RETURN_FALSE;
+ }
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ r = _PyEval_AddPendingCall(interp, &_pending_callback, callable, 0);
+ Py_END_ALLOW_THREADS
+ } while (r < 0);
+ }
+
+ Py_RETURN_TRUE;
+}
+
+
+static struct {
+ int64_t interpid;
+} pending_identify_result;
+
+static int
+_pending_identify_callback(void *arg)
+{
+ PyThread_type_lock mutex = (PyThread_type_lock)arg;
+ assert(pending_identify_result.interpid == -1);
+ PyThreadState *tstate = PyThreadState_Get();
+ pending_identify_result.interpid = PyInterpreterState_GetID(tstate->interp);
+ PyThread_release_lock(mutex);
+ return 0;
+}
+
+static PyObject *
+pending_identify(PyObject *self, PyObject *args)
+{
+ PyObject *interpid;
+ if (!PyArg_ParseTuple(args, "O:pending_identify", &interpid)) {
+ return NULL;
+ }
+ PyInterpreterState *interp = _PyInterpreterID_LookUp(interpid);
+ if (interp == NULL) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError, "interpreter not found");
+ }
+ return NULL;
+ }
+
+ pending_identify_result.interpid = -1;
+
+ PyThread_type_lock mutex = PyThread_allocate_lock();
+ if (mutex == NULL) {
+ return NULL;
+ }
+ PyThread_acquire_lock(mutex, WAIT_LOCK);
+ /* It gets released in _pending_identify_callback(). */
+
+ int r;
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ r = _PyEval_AddPendingCall(interp,
+ &_pending_identify_callback, (void *)mutex,
+ 0);
+ Py_END_ALLOW_THREADS
+ } while (r < 0);
+
+ /* Wait for the pending call to complete. */
+ PyThread_acquire_lock(mutex, WAIT_LOCK);
+ PyThread_release_lock(mutex);
+ PyThread_free_lock(mutex);
+
+ PyObject *res = PyLong_FromLongLong(pending_identify_result.interpid);
+ pending_identify_result.interpid = -1;
+ if (res == NULL) {
+ return NULL;
+ }
+ return res;
+}
+
+
static PyMethodDef module_functions[] = {
{"get_configs", get_configs, METH_NOARGS},
{"get_recursion_depth", get_recursion_depth, METH_NOARGS},
@@ -850,6 +966,9 @@ static PyMethodDef module_functions[] = {
{"iframe_getcode", iframe_getcode, METH_O, NULL},
{"iframe_getline", iframe_getline, METH_O, NULL},
{"iframe_getlasti", iframe_getlasti, METH_O, NULL},
+ {"pending_threadfunc", _PyCFunction_CAST(pending_threadfunc),
+ METH_VARARGS | METH_KEYWORDS},
+ {"pending_identify", pending_identify, METH_VARARGS, NULL},
{NULL, NULL} /* sentinel */
};
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index b6f878e..c553d03 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -81,6 +81,7 @@ lock_dealloc(lockobject *self)
static PyLockStatus
acquire_timed(PyThread_type_lock lock, _PyTime_t timeout)
{
+ PyThreadState *tstate = _PyThreadState_GET();
_PyTime_t endtime = 0;
if (timeout > 0) {
endtime = _PyDeadline_Init(timeout);
@@ -103,7 +104,7 @@ acquire_timed(PyThread_type_lock lock, _PyTime_t timeout)
/* Run signal handlers if we were interrupted. Propagate
* exceptions from signal handlers, such as KeyboardInterrupt, by
* passing up PY_LOCK_INTR. */
- if (Py_MakePendingCalls() < 0) {
+ if (_PyEval_MakePendingCalls(tstate) < 0) {
return PY_LOCK_INTR;
}
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 2350236..00ea434 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -314,7 +314,8 @@ trip_signal(int sig_num)
still use it for this exceptional case. */
_PyEval_AddPendingCall(interp,
report_wakeup_send_error,
- (void *)(intptr_t) last_error);
+ (void *)(intptr_t) last_error,
+ 1);
}
}
}
@@ -333,7 +334,8 @@ trip_signal(int sig_num)
still use it for this exceptional case. */
_PyEval_AddPendingCall(interp,
report_wakeup_write_error,
- (void *)(intptr_t)errno);
+ (void *)(intptr_t)errno,
+ 1);
}
}
}
diff --git a/Python/ceval.c b/Python/ceval.c
index df997e1..4762dfa 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -758,6 +758,61 @@ handle_eval_breaker:
* We need to do reasonably frequently, but not too frequently.
* All loops should include a check of the eval breaker.
* We also check on return from any builtin function.
+ *
+ * ## More Details ###
+ *
+ * The eval loop (this function) normally executes the instructions
+ * of a code object sequentially. However, the runtime supports a
+ * number of out-of-band execution scenarios that may pause that
+ * sequential execution long enough to do that out-of-band work
+ * in the current thread using the current PyThreadState.
+ *
+ * The scenarios include:
+ *
+ * - cyclic garbage collection
+ * - GIL drop requests
+ * - "async" exceptions
+ * - "pending calls" (some only in the main thread)
+ * - signal handling (only in the main thread)
+ *
+ * When the need for one of the above is detected, the eval loop
+ * pauses long enough to handle the detected case. Then, if doing
+ * so didn't trigger an exception, the eval loop resumes executing
+ * the sequential instructions.
+ *
+ * To make this work, the eval loop periodically checks if any
+ * of the above needs to happen. The individual checks can be
+ * expensive if computed each time, so a while back we switched
+ * to using pre-computed, per-interpreter variables for the checks,
+ * and later consolidated that to a single "eval breaker" variable
+ * (now a PyInterpreterState field).
+ *
+ * For the longest time, the eval breaker check would happen
+ * frequently, every 5 or so times through the loop, regardless
+ * of what instruction ran last or what would run next. Then, in
+ * early 2021 (gh-18334, commit 4958f5d), we switched to checking
+ * the eval breaker less frequently, by hard-coding the check to
+ * specific places in the eval loop (e.g. certain instructions).
+ * The intent then was to check after returning from calls
+ * and on the back edges of loops.
+ *
+ * In addition to being more efficient, that approach keeps
+ * the eval loop from running arbitrary code between instructions
+ * that don't handle that well. (See gh-74174.)
+ *
+ * Currently, the eval breaker check happens here at the
+ * "handle_eval_breaker" label. Some instructions come here
+ * explicitly (goto) and some indirectly. Notably, the check
+ * happens on back edges in the control flow graph, which
+ * pretty much applies to all loops and most calls.
+ * (See bytecodes.c for exact information.)
+ *
+ * One consequence of this approach is that it might not be obvious
+ * how to force any specific thread to pick up the eval breaker,
+ * or for any specific thread to not pick it up. Mostly this
+ * involves judicious uses of locks and careful ordering of code,
+ * while avoiding code that might trigger the eval breaker
+ * until so desired.
*/
if (_Py_HandlePending(tstate) != 0) {
goto error;
diff --git a/Python/ceval_gil.c b/Python/ceval_gil.c
index 764278a..aacf2b5 100644
--- a/Python/ceval_gil.c
+++ b/Python/ceval_gil.c
@@ -68,8 +68,9 @@ COMPUTE_EVAL_BREAKER(PyInterpreterState *interp,
_Py_atomic_load_relaxed_int32(&ceval2->gil_drop_request)
| (_Py_atomic_load_relaxed_int32(&ceval->signals_pending)
&& _Py_ThreadCanHandleSignals(interp))
- | (_Py_atomic_load_relaxed_int32(&ceval2->pending.calls_to_do)
- && _Py_ThreadCanHandlePendingCalls())
+ | (_Py_atomic_load_relaxed_int32(&ceval2->pending.calls_to_do))
+ | (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)
+ &&_Py_atomic_load_relaxed_int32(&ceval->pending_mainthread.calls_to_do))
| ceval2->pending.async_exc
| _Py_atomic_load_relaxed_int32(&ceval2->gc_scheduled));
}
@@ -95,11 +96,11 @@ RESET_GIL_DROP_REQUEST(PyInterpreterState *interp)
static inline void
-SIGNAL_PENDING_CALLS(PyInterpreterState *interp)
+SIGNAL_PENDING_CALLS(struct _pending_calls *pending, PyInterpreterState *interp)
{
struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
struct _ceval_state *ceval2 = &interp->ceval;
- _Py_atomic_store_relaxed(&ceval2->pending.calls_to_do, 1);
+ _Py_atomic_store_relaxed(&pending->calls_to_do, 1);
COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
}
@@ -109,6 +110,9 @@ UNSIGNAL_PENDING_CALLS(PyInterpreterState *interp)
{
struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
struct _ceval_state *ceval2 = &interp->ceval;
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)) {
+ _Py_atomic_store_relaxed(&ceval->pending_mainthread.calls_to_do, 0);
+ }
_Py_atomic_store_relaxed(&ceval2->pending.calls_to_do, 0);
COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
}
@@ -798,19 +802,31 @@ _push_pending_call(struct _pending_calls *pending,
return 0;
}
-/* Pop one item off the queue while holding the lock. */
-static void
-_pop_pending_call(struct _pending_calls *pending,
- int (**func)(void *), void **arg)
+static int
+_next_pending_call(struct _pending_calls *pending,
+ int (**func)(void *), void **arg)
{
int i = pending->first;
if (i == pending->last) {
- return; /* Queue empty */
+ /* Queue empty */
+ assert(pending->calls[i].func == NULL);
+ return -1;
}
-
*func = pending->calls[i].func;
*arg = pending->calls[i].arg;
- pending->first = (i + 1) % NPENDINGCALLS;
+ return i;
+}
+
+/* Pop one item off the queue while holding the lock. */
+static void
+_pop_pending_call(struct _pending_calls *pending,
+ int (**func)(void *), void **arg)
+{
+ int i = _next_pending_call(pending, func, arg);
+ if (i >= 0) {
+ pending->calls[i] = (struct _pending_call){0};
+ pending->first = (i + 1) % NPENDINGCALLS;
+ }
}
/* This implementation is thread-safe. It allows
@@ -820,9 +836,16 @@ _pop_pending_call(struct _pending_calls *pending,
int
_PyEval_AddPendingCall(PyInterpreterState *interp,
- int (*func)(void *), void *arg)
+ int (*func)(void *), void *arg,
+ int mainthreadonly)
{
+ assert(!mainthreadonly || _Py_IsMainInterpreter(interp));
struct _pending_calls *pending = &interp->ceval.pending;
+ if (mainthreadonly) {
+ /* The main thread only exists in the main interpreter. */
+ assert(_Py_IsMainInterpreter(interp));
+ pending = &_PyRuntime.ceval.pending_mainthread;
+ }
/* Ensure that _PyEval_InitState() was called
and that _PyEval_FiniState() is not called yet. */
assert(pending->lock != NULL);
@@ -832,39 +855,17 @@ _PyEval_AddPendingCall(PyInterpreterState *interp,
PyThread_release_lock(pending->lock);
/* signal main loop */
- SIGNAL_PENDING_CALLS(interp);
+ SIGNAL_PENDING_CALLS(pending, interp);
return result;
}
int
Py_AddPendingCall(int (*func)(void *), void *arg)
{
- /* Best-effort to support subinterpreters and calls with the GIL released.
-
- First attempt _PyThreadState_GET() since it supports subinterpreters.
-
- If the GIL is released, _PyThreadState_GET() returns NULL . In this
- case, use PyGILState_GetThisThreadState() which works even if the GIL
- is released.
-
- Sadly, PyGILState_GetThisThreadState() doesn't support subinterpreters:
- see bpo-10915 and bpo-15751.
-
- Py_AddPendingCall() doesn't require the caller to hold the GIL. */
- PyThreadState *tstate = _PyThreadState_GET();
- if (tstate == NULL) {
- tstate = PyGILState_GetThisThreadState();
- }
-
- PyInterpreterState *interp;
- if (tstate != NULL) {
- interp = tstate->interp;
- }
- else {
- /* Last resort: use the main interpreter */
- interp = _PyInterpreterState_Main();
- }
- return _PyEval_AddPendingCall(interp, func, arg);
+ /* Legacy users of this API will continue to target the main thread
+ (of the main interpreter). */
+ PyInterpreterState *interp = _PyInterpreterState_Main();
+ return _PyEval_AddPendingCall(interp, func, arg, 1);
}
static int
@@ -884,27 +885,24 @@ handle_signals(PyThreadState *tstate)
return 0;
}
-static int
-make_pending_calls(PyInterpreterState *interp)
+static inline int
+maybe_has_pending_calls(PyInterpreterState *interp)
{
- /* only execute pending calls on main thread */
- if (!_Py_ThreadCanHandlePendingCalls()) {
- return 0;
+ struct _pending_calls *pending = &interp->ceval.pending;
+ if (_Py_atomic_load_relaxed_int32(&pending->calls_to_do)) {
+ return 1;
}
-
- /* don't perform recursive pending calls */
- if (interp->ceval.pending.busy) {
+ if (!_Py_IsMainThread() || !_Py_IsMainInterpreter(interp)) {
return 0;
}
- interp->ceval.pending.busy = 1;
-
- /* unsignal before starting to call callbacks, so that any callback
- added in-between re-signals */
- UNSIGNAL_PENDING_CALLS(interp);
- int res = 0;
+ pending = &_PyRuntime.ceval.pending_mainthread;
+ return _Py_atomic_load_relaxed_int32(&pending->calls_to_do);
+}
+static int
+_make_pending_calls(struct _pending_calls *pending)
+{
/* perform a bounded number of calls, in case of recursion */
- struct _pending_calls *pending = &interp->ceval.pending;
for (int i=0; i<NPENDINGCALLS; i++) {
int (*func)(void *) = NULL;
void *arg = NULL;
@@ -918,19 +916,61 @@ make_pending_calls(PyInterpreterState *interp)
if (func == NULL) {
break;
}
- res = func(arg);
- if (res) {
- goto error;
+ if (func(arg) != 0) {
+ return -1;
}
}
+ return 0;
+}
+
+static int
+make_pending_calls(PyInterpreterState *interp)
+{
+ struct _pending_calls *pending = &interp->ceval.pending;
+ struct _pending_calls *pending_main = &_PyRuntime.ceval.pending_mainthread;
+
+ /* Only one thread (per interpreter) may run the pending calls
+ at once. In the same way, we don't do recursive pending calls. */
+ PyThread_acquire_lock(pending->lock, WAIT_LOCK);
+ if (pending->busy) {
+ /* A pending call was added after another thread was already
+ handling the pending calls (and had already "unsignaled").
+ Once that thread is done, it may have taken care of all the
+ pending calls, or there might be some still waiting.
+ Regardless, this interpreter's pending calls will stay
+ "signaled" until that first thread has finished. At that
+ point the next thread to trip the eval breaker will take
+ care of any remaining pending calls. Until then, though,
+ all the interpreter's threads will be tripping the eval
+ breaker every time it's checked. */
+ PyThread_release_lock(pending->lock);
+ return 0;
+ }
+ pending->busy = 1;
+ PyThread_release_lock(pending->lock);
+
+ /* unsignal before starting to call callbacks, so that any callback
+ added in-between re-signals */
+ UNSIGNAL_PENDING_CALLS(interp);
+
+ if (_make_pending_calls(pending) != 0) {
+ pending->busy = 0;
+ /* There might not be more calls to make, but we play it safe. */
+ SIGNAL_PENDING_CALLS(pending, interp);
+ return -1;
+ }
- interp->ceval.pending.busy = 0;
- return res;
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)) {
+ if (_make_pending_calls(pending_main) != 0) {
+ pending->busy = 0;
+ /* There might not be more calls to make, but we play it safe. */
+ SIGNAL_PENDING_CALLS(pending_main, interp);
+ return -1;
+ }
+ }
-error:
- interp->ceval.pending.busy = 0;
- SIGNAL_PENDING_CALLS(interp);
- return res;
+ pending->busy = 0;
+ return 0;
}
void
@@ -939,12 +979,6 @@ _Py_FinishPendingCalls(PyThreadState *tstate)
assert(PyGILState_Check());
assert(is_tstate_valid(tstate));
- struct _pending_calls *pending = &tstate->interp->ceval.pending;
-
- if (!_Py_atomic_load_relaxed_int32(&(pending->calls_to_do))) {
- return;
- }
-
if (make_pending_calls(tstate->interp) < 0) {
PyObject *exc = _PyErr_GetRaisedException(tstate);
PyErr_BadInternalCall();
@@ -953,6 +987,29 @@ _Py_FinishPendingCalls(PyThreadState *tstate)
}
}
+int
+_PyEval_MakePendingCalls(PyThreadState *tstate)
+{
+ int res;
+
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(tstate->interp)) {
+ /* Python signal handler doesn't really queue a callback:
+ it only signals that a signal was received,
+ see _PyEval_SignalReceived(). */
+ res = handle_signals(tstate);
+ if (res != 0) {
+ return res;
+ }
+ }
+
+ res = make_pending_calls(tstate->interp);
+ if (res != 0) {
+ return res;
+ }
+
+ return 0;
+}
+
/* Py_MakePendingCalls() is a simple wrapper for the sake
of backward-compatibility. */
int
@@ -963,19 +1020,11 @@ Py_MakePendingCalls(void)
PyThreadState *tstate = _PyThreadState_GET();
assert(is_tstate_valid(tstate));
- /* Python signal handler doesn't really queue a callback: it only signals
- that a signal was received, see _PyEval_SignalReceived(). */
- int res = handle_signals(tstate);
- if (res != 0) {
- return res;
- }
-
- res = make_pending_calls(tstate->interp);
- if (res != 0) {
- return res;
+ /* Only execute pending calls on the main thread. */
+ if (!_Py_IsMainThread() || !_Py_IsMainInterpreter(tstate->interp)) {
+ return 0;
}
-
- return 0;
+ return _PyEval_MakePendingCalls(tstate);
}
void
@@ -1015,7 +1064,7 @@ _Py_HandlePending(PyThreadState *tstate)
}
/* Pending calls */
- if (_Py_atomic_load_relaxed_int32(&interp_ceval_state->pending.calls_to_do)) {
+ if (maybe_has_pending_calls(tstate->interp)) {
if (make_pending_calls(tstate->interp) != 0) {
return -1;
}
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index c4e6b69..a67fa26 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -2152,6 +2152,9 @@ Py_EndInterpreter(PyThreadState *tstate)
// Wrap up existing "threading"-module-created, non-daemon threads.
wait_for_thread_shutdown(tstate);
+ // Make any remaining pending calls.
+ _Py_FinishPendingCalls(tstate);
+
_PyAtExit_Call(tstate->interp);
if (tstate != interp->threads.head || tstate->next != NULL) {
diff --git a/Python/pystate.c b/Python/pystate.c
index d63a873..da0e1c4 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -380,7 +380,7 @@ _Py_COMP_DIAG_IGNORE_DEPR_DECLS
static const _PyRuntimeState initial = _PyRuntimeState_INIT(_PyRuntime);
_Py_COMP_DIAG_POP
-#define NUMLOCKS 8
+#define NUMLOCKS 9
#define LOCKS_INIT(runtime) \
{ \
&(runtime)->interpreters.mutex, \
@@ -388,6 +388,7 @@ _Py_COMP_DIAG_POP
&(runtime)->getargs.mutex, \
&(runtime)->unicode_state.ids.lock, \
&(runtime)->imports.extensions.mutex, \
+ &(runtime)->ceval.pending_mainthread.lock, \
&(runtime)->atexit.mutex, \
&(runtime)->audit_hooks.mutex, \
&(runtime)->allocators.mutex, \
diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv
index 4c40a04..b6745b6 100644
--- a/Tools/c-analyzer/cpython/ignored.tsv
+++ b/Tools/c-analyzer/cpython/ignored.tsv
@@ -517,6 +517,7 @@ Modules/_testcapimodule.c - g_type_watchers_installed -
Modules/_testimportmultiple.c - _barmodule -
Modules/_testimportmultiple.c - _foomodule -
Modules/_testimportmultiple.c - _testimportmultiple -
+Modules/_testinternalcapi.c - pending_identify_result -
Modules/_testmultiphase.c - Example_Type_slots -
Modules/_testmultiphase.c - Example_Type_spec -
Modules/_testmultiphase.c - Example_methods -