diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2023-06-14 00:50:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-14 00:50:08 (GMT) |
commit | 33d3069c45bda38f52053a115e3c0810cd631dd6 (patch) | |
tree | ee49a043f3960473e891ce9a1a4be3abee2a878c | |
parent | 75239d5ec1505b8f9f20d3c2d366c1a3ebd269aa (diff) | |
download | cpython-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.abi | 1089 | ||||
-rw-r--r-- | Include/cpython/ceval.h | 2 | ||||
-rw-r--r-- | Include/internal/pycore_ceval.h | 3 | ||||
-rw-r--r-- | Include/internal/pycore_ceval_state.h | 38 | ||||
-rw-r--r-- | Include/internal/pycore_pystate.h | 8 | ||||
-rw-r--r-- | Lib/test/support/threading_helper.py | 9 | ||||
-rw-r--r-- | Lib/test/test_capi/test_misc.py | 403 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2023-06-02-15-15-41.gh-issue-104812.dfZiG5.rst | 9 | ||||
-rw-r--r-- | Modules/_queuemodule.c | 3 | ||||
-rw-r--r-- | Modules/_testinternalcapi.c | 121 | ||||
-rw-r--r-- | Modules/_threadmodule.c | 3 | ||||
-rw-r--r-- | Modules/signalmodule.c | 6 | ||||
-rw-r--r-- | Python/ceval.c | 55 | ||||
-rw-r--r-- | Python/ceval_gil.c | 213 | ||||
-rw-r--r-- | Python/pylifecycle.c | 3 | ||||
-rw-r--r-- | Python/pystate.c | 3 | ||||
-rw-r--r-- | Tools/c-analyzer/cpython/ignored.tsv | 1 |
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 - |