Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +93 -54
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  /* WARNING, this code is GENERATED. Modify the template CodeTemplateCallsPositional.c.j2 instead! */
19
4
 
20
5
  /* This file is included from another C file, help IDEs to still parse it on its own. */
@@ -105,6 +90,44 @@ PyObject *CALL_FUNCTION_NO_ARGS(PyThreadState *tstate, PyObject *called) {
105
90
  }
106
91
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
107
92
  } else if (PyCFunction_CheckExact(called)) {
93
+ #if PYTHON_VERSION >= 0x380
94
+ #ifdef _NUITKA_FULL_COMPAT
95
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
96
+ return NULL;
97
+ }
98
+ #endif
99
+
100
+ int flags = PyCFunction_GET_FLAGS(called);
101
+
102
+ PyObject *result;
103
+
104
+ if (!(flags & METH_VARARGS)) {
105
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
106
+
107
+ assert(func != NULL);
108
+ result = func(called, NULL, 0, NULL);
109
+
110
+ CHECK_OBJECT_X(result);
111
+ } else {
112
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
113
+ PyObject *self = PyCFunction_GET_SELF(called);
114
+
115
+ PyObject *pos_args = const_tuple_empty;
116
+
117
+ if (flags & METH_KEYWORDS) {
118
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
119
+ } else {
120
+ result = (*method)(self, pos_args);
121
+ }
122
+ }
123
+
124
+ #ifdef _NUITKA_FULL_COMPAT
125
+ Py_LeaveRecursiveCall();
126
+ #endif
127
+ CHECK_OBJECT_X(result);
128
+
129
+ return Nuitka_CheckFunctionResult(tstate, called, result);
130
+ #else
108
131
  // Try to be fast about wrapping the arguments.
109
132
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
110
133
 
@@ -178,7 +201,8 @@ PyObject *CALL_FUNCTION_NO_ARGS(PyThreadState *tstate, PyObject *called) {
178
201
  return Nuitka_CheckFunctionResult(tstate, called, result);
179
202
  }
180
203
  #endif
181
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
204
+ #endif
205
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
182
206
  } else if (PyFunction_Check(called)) {
183
207
  #if PYTHON_VERSION < 0x3b0
184
208
  PyObject *result = callPythonFunctionNoArgs(called);
@@ -486,6 +510,46 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
486
510
  }
487
511
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
488
512
  } else if (PyCFunction_CheckExact(called)) {
513
+ #if PYTHON_VERSION >= 0x380
514
+ #ifdef _NUITKA_FULL_COMPAT
515
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
516
+ return NULL;
517
+ }
518
+ #endif
519
+
520
+ int flags = PyCFunction_GET_FLAGS(called);
521
+
522
+ PyObject *result;
523
+
524
+ if (!(flags & METH_VARARGS)) {
525
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
526
+
527
+ assert(func != NULL);
528
+ result = func(called, args, 1, NULL);
529
+
530
+ CHECK_OBJECT_X(result);
531
+ } else {
532
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
533
+ PyObject *self = PyCFunction_GET_SELF(called);
534
+
535
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
536
+
537
+ if (flags & METH_KEYWORDS) {
538
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
539
+ } else {
540
+ result = (*method)(self, pos_args);
541
+ }
542
+
543
+ Py_DECREF(pos_args);
544
+ }
545
+
546
+ #ifdef _NUITKA_FULL_COMPAT
547
+ Py_LeaveRecursiveCall();
548
+ #endif
549
+ CHECK_OBJECT_X(result);
550
+
551
+ return Nuitka_CheckFunctionResult(tstate, called, result);
552
+ #else
489
553
  // Try to be fast about wrapping the arguments.
490
554
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
491
555
 
@@ -527,7 +591,7 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
527
591
  PyObject *result;
528
592
 
529
593
  #if PYTHON_VERSION < 0x360
530
- PyObject *pos_args = MAKE_TUPLE(args, 1);
594
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
531
595
  if (flags & METH_KEYWORDS) {
532
596
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
533
597
  } else {
@@ -537,19 +601,19 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
537
601
  Py_DECREF(pos_args);
538
602
  #else
539
603
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
540
- PyObject *pos_args = MAKE_TUPLE(args, 1);
604
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
541
605
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
542
606
  Py_DECREF(pos_args);
543
607
  } else if (flags == METH_FASTCALL) {
544
608
  #if PYTHON_VERSION < 0x370
545
609
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 1, NULL);
546
610
  #else
547
- PyObject *pos_args = MAKE_TUPLE(args, 1);
611
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
548
612
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 1);
549
613
  Py_DECREF(pos_args);
550
614
  #endif
551
615
  } else {
552
- PyObject *pos_args = MAKE_TUPLE(args, 1);
616
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
553
617
  result = (*method)(self, pos_args);
554
618
  Py_DECREF(pos_args);
555
619
  }
@@ -564,7 +628,8 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
564
628
  return Nuitka_CheckFunctionResult(tstate, called, result);
565
629
  }
566
630
  #endif
567
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
631
+ #endif
632
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
568
633
  } else if (PyFunction_Check(called)) {
569
634
  #if PYTHON_VERSION < 0x3b0
570
635
  PyObject *result = callPythonFunction(called, args, 1);
@@ -605,7 +670,7 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
605
670
  obj = called_type->tp_alloc(called_type, 0);
606
671
  CHECK_OBJECT(obj);
607
672
  } else {
608
- pos_args = MAKE_TUPLE(args, 1);
673
+ pos_args = MAKE_TUPLE(tstate, args, 1);
609
674
  obj = called_type->tp_new(called_type, pos_args, NULL);
610
675
  }
611
676
 
@@ -678,7 +743,7 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
678
743
  }
679
744
  } else {
680
745
  if (pos_args == NULL) {
681
- pos_args = MAKE_TUPLE(args, 1);
746
+ pos_args = MAKE_TUPLE(tstate, args, 1);
682
747
  }
683
748
 
684
749
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -777,7 +842,7 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
777
842
  PRINT_NEW_LINE();
778
843
  #endif
779
844
 
780
- PyObject *pos_args = MAKE_TUPLE(args, 1);
845
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
781
846
 
782
847
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
783
848
 
@@ -787,7 +852,7 @@ PyObject *CALL_FUNCTION_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *called,
787
852
 
788
853
  return result;
789
854
  }
790
- PyObject *CALL_FUNCTION_WITH_POSARGS1(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
855
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS1(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
791
856
  assert(PyTuple_CheckExact(pos_args));
792
857
  assert(PyTuple_GET_SIZE(pos_args) == 1);
793
858
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -898,6 +963,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS1(PyThreadState *tstate, PyObject *called, P
898
963
  }
899
964
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
900
965
  } else if (PyCFunction_CheckExact(called)) {
966
+ #if PYTHON_VERSION >= 0x380
967
+ #ifdef _NUITKA_FULL_COMPAT
968
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
969
+ return NULL;
970
+ }
971
+ #endif
972
+
973
+ int flags = PyCFunction_GET_FLAGS(called);
974
+
975
+ PyObject *result;
976
+
977
+ if (!(flags & METH_VARARGS)) {
978
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
979
+
980
+ assert(func != NULL);
981
+ result = func(called, args, 1, NULL);
982
+
983
+ CHECK_OBJECT_X(result);
984
+ } else {
985
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
986
+ PyObject *self = PyCFunction_GET_SELF(called);
987
+
988
+ if (flags & METH_KEYWORDS) {
989
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
990
+ } else {
991
+ result = (*method)(self, pos_args);
992
+ }
993
+ }
994
+
995
+ #ifdef _NUITKA_FULL_COMPAT
996
+ Py_LeaveRecursiveCall();
997
+ #endif
998
+ CHECK_OBJECT_X(result);
999
+
1000
+ return Nuitka_CheckFunctionResult(tstate, called, result);
1001
+ #else
901
1002
  // Try to be fast about wrapping the arguments.
902
1003
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
903
1004
 
@@ -968,7 +1069,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS1(PyThreadState *tstate, PyObject *called, P
968
1069
  return Nuitka_CheckFunctionResult(tstate, called, result);
969
1070
  }
970
1071
  #endif
971
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
1072
+ #endif
1073
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
972
1074
  } else if (PyFunction_Check(called)) {
973
1075
  #if PYTHON_VERSION < 0x3b0
974
1076
  PyObject *result = callPythonFunction(called, args, 1);
@@ -1288,6 +1390,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1288
1390
  }
1289
1391
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
1290
1392
  } else if (PyCFunction_CheckExact(called)) {
1393
+ #if PYTHON_VERSION >= 0x380
1394
+ #ifdef _NUITKA_FULL_COMPAT
1395
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
1396
+ return NULL;
1397
+ }
1398
+ #endif
1399
+
1400
+ int flags = PyCFunction_GET_FLAGS(called);
1401
+
1402
+ PyObject *result;
1403
+
1404
+ if (!(flags & METH_VARARGS)) {
1405
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
1406
+
1407
+ assert(func != NULL);
1408
+ result = func(called, args, 2, NULL);
1409
+
1410
+ CHECK_OBJECT_X(result);
1411
+ } else {
1412
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
1413
+ PyObject *self = PyCFunction_GET_SELF(called);
1414
+
1415
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1416
+
1417
+ if (flags & METH_KEYWORDS) {
1418
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
1419
+ } else {
1420
+ result = (*method)(self, pos_args);
1421
+ }
1422
+
1423
+ Py_DECREF(pos_args);
1424
+ }
1425
+
1426
+ #ifdef _NUITKA_FULL_COMPAT
1427
+ Py_LeaveRecursiveCall();
1428
+ #endif
1429
+ CHECK_OBJECT_X(result);
1430
+
1431
+ return Nuitka_CheckFunctionResult(tstate, called, result);
1432
+ #else
1291
1433
  // Try to be fast about wrapping the arguments.
1292
1434
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
1293
1435
 
@@ -1313,7 +1455,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1313
1455
  PyObject *result;
1314
1456
 
1315
1457
  #if PYTHON_VERSION < 0x360
1316
- PyObject *pos_args = MAKE_TUPLE(args, 2);
1458
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1317
1459
  if (flags & METH_KEYWORDS) {
1318
1460
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
1319
1461
  } else {
@@ -1323,19 +1465,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1323
1465
  Py_DECREF(pos_args);
1324
1466
  #else
1325
1467
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
1326
- PyObject *pos_args = MAKE_TUPLE(args, 2);
1468
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1327
1469
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
1328
1470
  Py_DECREF(pos_args);
1329
1471
  } else if (flags == METH_FASTCALL) {
1330
1472
  #if PYTHON_VERSION < 0x370
1331
1473
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 2, NULL);
1332
1474
  #else
1333
- PyObject *pos_args = MAKE_TUPLE(args, 2);
1475
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1334
1476
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 2);
1335
1477
  Py_DECREF(pos_args);
1336
1478
  #endif
1337
1479
  } else {
1338
- PyObject *pos_args = MAKE_TUPLE(args, 2);
1480
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1339
1481
  result = (*method)(self, pos_args);
1340
1482
  Py_DECREF(pos_args);
1341
1483
  }
@@ -1350,7 +1492,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1350
1492
  return Nuitka_CheckFunctionResult(tstate, called, result);
1351
1493
  }
1352
1494
  #endif
1353
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
1495
+ #endif
1496
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
1354
1497
  } else if (PyFunction_Check(called)) {
1355
1498
  #if PYTHON_VERSION < 0x3b0
1356
1499
  PyObject *result = callPythonFunction(called, args, 2);
@@ -1385,7 +1528,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1385
1528
  obj = called_type->tp_alloc(called_type, 0);
1386
1529
  CHECK_OBJECT(obj);
1387
1530
  } else {
1388
- pos_args = MAKE_TUPLE(args, 2);
1531
+ pos_args = MAKE_TUPLE(tstate, args, 2);
1389
1532
  obj = called_type->tp_new(called_type, pos_args, NULL);
1390
1533
  }
1391
1534
 
@@ -1457,7 +1600,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1457
1600
  }
1458
1601
  } else {
1459
1602
  if (pos_args == NULL) {
1460
- pos_args = MAKE_TUPLE(args, 2);
1603
+ pos_args = MAKE_TUPLE(tstate, args, 2);
1461
1604
  }
1462
1605
 
1463
1606
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -1556,7 +1699,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1556
1699
  PRINT_NEW_LINE();
1557
1700
  #endif
1558
1701
 
1559
- PyObject *pos_args = MAKE_TUPLE(args, 2);
1702
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
1560
1703
 
1561
1704
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
1562
1705
 
@@ -1566,7 +1709,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2(PyThreadState *tstate, PyObject *called, PyOb
1566
1709
 
1567
1710
  return result;
1568
1711
  }
1569
- PyObject *CALL_FUNCTION_WITH_POSARGS2(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
1712
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS2(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
1570
1713
  assert(PyTuple_CheckExact(pos_args));
1571
1714
  assert(PyTuple_GET_SIZE(pos_args) == 2);
1572
1715
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -1681,6 +1824,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS2(PyThreadState *tstate, PyObject *called, P
1681
1824
  }
1682
1825
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
1683
1826
  } else if (PyCFunction_CheckExact(called)) {
1827
+ #if PYTHON_VERSION >= 0x380
1828
+ #ifdef _NUITKA_FULL_COMPAT
1829
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
1830
+ return NULL;
1831
+ }
1832
+ #endif
1833
+
1834
+ int flags = PyCFunction_GET_FLAGS(called);
1835
+
1836
+ PyObject *result;
1837
+
1838
+ if (!(flags & METH_VARARGS)) {
1839
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
1840
+
1841
+ assert(func != NULL);
1842
+ result = func(called, args, 2, NULL);
1843
+
1844
+ CHECK_OBJECT_X(result);
1845
+ } else {
1846
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
1847
+ PyObject *self = PyCFunction_GET_SELF(called);
1848
+
1849
+ if (flags & METH_KEYWORDS) {
1850
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
1851
+ } else {
1852
+ result = (*method)(self, pos_args);
1853
+ }
1854
+ }
1855
+
1856
+ #ifdef _NUITKA_FULL_COMPAT
1857
+ Py_LeaveRecursiveCall();
1858
+ #endif
1859
+ CHECK_OBJECT_X(result);
1860
+
1861
+ return Nuitka_CheckFunctionResult(tstate, called, result);
1862
+ #else
1684
1863
  // Try to be fast about wrapping the arguments.
1685
1864
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
1686
1865
 
@@ -1735,7 +1914,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS2(PyThreadState *tstate, PyObject *called, P
1735
1914
  return Nuitka_CheckFunctionResult(tstate, called, result);
1736
1915
  }
1737
1916
  #endif
1738
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
1917
+ #endif
1918
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
1739
1919
  } else if (PyFunction_Check(called)) {
1740
1920
  #if PYTHON_VERSION < 0x3b0
1741
1921
  PyObject *result = callPythonFunction(called, args, 2);
@@ -1816,7 +1996,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS2(PyThreadState *tstate, PyObject *called, P
1816
1996
  result = Nuitka_CallMethodFunctionPosArgs(
1817
1997
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 2);
1818
1998
  } else {
1819
- result = CALL_FUNCTION_WITH_POSARGS2(tstate, init_method, pos_args);
1999
+ result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, init_method, pos_args);
1820
2000
  if (init_method_needs_release) {
1821
2001
  Py_DECREF(init_method);
1822
2002
  }
@@ -1891,7 +2071,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS2(PyThreadState *tstate, PyObject *called, P
1891
2071
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
1892
2072
  args, 2);
1893
2073
  } else {
1894
- result = CALL_FUNCTION_WITH_POSARGS2(tstate, init_method, pos_args);
2074
+ result = CALL_FUNCTION_WITH_POS_ARGS2(tstate, init_method, pos_args);
1895
2075
  Py_DECREF(init_method);
1896
2076
  }
1897
2077
  if (unlikely(result == NULL)) {
@@ -2048,6 +2228,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2048
2228
  }
2049
2229
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
2050
2230
  } else if (PyCFunction_CheckExact(called)) {
2231
+ #if PYTHON_VERSION >= 0x380
2232
+ #ifdef _NUITKA_FULL_COMPAT
2233
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
2234
+ return NULL;
2235
+ }
2236
+ #endif
2237
+
2238
+ int flags = PyCFunction_GET_FLAGS(called);
2239
+
2240
+ PyObject *result;
2241
+
2242
+ if (!(flags & METH_VARARGS)) {
2243
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
2244
+
2245
+ assert(func != NULL);
2246
+ result = func(called, args, 3, NULL);
2247
+
2248
+ CHECK_OBJECT_X(result);
2249
+ } else {
2250
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
2251
+ PyObject *self = PyCFunction_GET_SELF(called);
2252
+
2253
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2254
+
2255
+ if (flags & METH_KEYWORDS) {
2256
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
2257
+ } else {
2258
+ result = (*method)(self, pos_args);
2259
+ }
2260
+
2261
+ Py_DECREF(pos_args);
2262
+ }
2263
+
2264
+ #ifdef _NUITKA_FULL_COMPAT
2265
+ Py_LeaveRecursiveCall();
2266
+ #endif
2267
+ CHECK_OBJECT_X(result);
2268
+
2269
+ return Nuitka_CheckFunctionResult(tstate, called, result);
2270
+ #else
2051
2271
  // Try to be fast about wrapping the arguments.
2052
2272
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
2053
2273
 
@@ -2073,7 +2293,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2073
2293
  PyObject *result;
2074
2294
 
2075
2295
  #if PYTHON_VERSION < 0x360
2076
- PyObject *pos_args = MAKE_TUPLE(args, 3);
2296
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2077
2297
  if (flags & METH_KEYWORDS) {
2078
2298
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
2079
2299
  } else {
@@ -2083,19 +2303,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2083
2303
  Py_DECREF(pos_args);
2084
2304
  #else
2085
2305
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
2086
- PyObject *pos_args = MAKE_TUPLE(args, 3);
2306
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2087
2307
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
2088
2308
  Py_DECREF(pos_args);
2089
2309
  } else if (flags == METH_FASTCALL) {
2090
2310
  #if PYTHON_VERSION < 0x370
2091
2311
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 3, NULL);
2092
2312
  #else
2093
- PyObject *pos_args = MAKE_TUPLE(args, 3);
2313
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2094
2314
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 3);
2095
2315
  Py_DECREF(pos_args);
2096
2316
  #endif
2097
2317
  } else {
2098
- PyObject *pos_args = MAKE_TUPLE(args, 3);
2318
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2099
2319
  result = (*method)(self, pos_args);
2100
2320
  Py_DECREF(pos_args);
2101
2321
  }
@@ -2110,7 +2330,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2110
2330
  return Nuitka_CheckFunctionResult(tstate, called, result);
2111
2331
  }
2112
2332
  #endif
2113
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
2333
+ #endif
2334
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
2114
2335
  } else if (PyFunction_Check(called)) {
2115
2336
  #if PYTHON_VERSION < 0x3b0
2116
2337
  PyObject *result = callPythonFunction(called, args, 3);
@@ -2145,7 +2366,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2145
2366
  obj = called_type->tp_alloc(called_type, 0);
2146
2367
  CHECK_OBJECT(obj);
2147
2368
  } else {
2148
- pos_args = MAKE_TUPLE(args, 3);
2369
+ pos_args = MAKE_TUPLE(tstate, args, 3);
2149
2370
  obj = called_type->tp_new(called_type, pos_args, NULL);
2150
2371
  }
2151
2372
 
@@ -2217,7 +2438,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2217
2438
  }
2218
2439
  } else {
2219
2440
  if (pos_args == NULL) {
2220
- pos_args = MAKE_TUPLE(args, 3);
2441
+ pos_args = MAKE_TUPLE(tstate, args, 3);
2221
2442
  }
2222
2443
 
2223
2444
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -2316,7 +2537,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2316
2537
  PRINT_NEW_LINE();
2317
2538
  #endif
2318
2539
 
2319
- PyObject *pos_args = MAKE_TUPLE(args, 3);
2540
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
2320
2541
 
2321
2542
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
2322
2543
 
@@ -2326,7 +2547,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3(PyThreadState *tstate, PyObject *called, PyOb
2326
2547
 
2327
2548
  return result;
2328
2549
  }
2329
- PyObject *CALL_FUNCTION_WITH_POSARGS3(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
2550
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS3(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
2330
2551
  assert(PyTuple_CheckExact(pos_args));
2331
2552
  assert(PyTuple_GET_SIZE(pos_args) == 3);
2332
2553
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -2441,6 +2662,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS3(PyThreadState *tstate, PyObject *called, P
2441
2662
  }
2442
2663
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
2443
2664
  } else if (PyCFunction_CheckExact(called)) {
2665
+ #if PYTHON_VERSION >= 0x380
2666
+ #ifdef _NUITKA_FULL_COMPAT
2667
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
2668
+ return NULL;
2669
+ }
2670
+ #endif
2671
+
2672
+ int flags = PyCFunction_GET_FLAGS(called);
2673
+
2674
+ PyObject *result;
2675
+
2676
+ if (!(flags & METH_VARARGS)) {
2677
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
2678
+
2679
+ assert(func != NULL);
2680
+ result = func(called, args, 3, NULL);
2681
+
2682
+ CHECK_OBJECT_X(result);
2683
+ } else {
2684
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
2685
+ PyObject *self = PyCFunction_GET_SELF(called);
2686
+
2687
+ if (flags & METH_KEYWORDS) {
2688
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
2689
+ } else {
2690
+ result = (*method)(self, pos_args);
2691
+ }
2692
+ }
2693
+
2694
+ #ifdef _NUITKA_FULL_COMPAT
2695
+ Py_LeaveRecursiveCall();
2696
+ #endif
2697
+ CHECK_OBJECT_X(result);
2698
+
2699
+ return Nuitka_CheckFunctionResult(tstate, called, result);
2700
+ #else
2444
2701
  // Try to be fast about wrapping the arguments.
2445
2702
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
2446
2703
 
@@ -2495,7 +2752,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS3(PyThreadState *tstate, PyObject *called, P
2495
2752
  return Nuitka_CheckFunctionResult(tstate, called, result);
2496
2753
  }
2497
2754
  #endif
2498
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
2755
+ #endif
2756
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
2499
2757
  } else if (PyFunction_Check(called)) {
2500
2758
  #if PYTHON_VERSION < 0x3b0
2501
2759
  PyObject *result = callPythonFunction(called, args, 3);
@@ -2576,7 +2834,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS3(PyThreadState *tstate, PyObject *called, P
2576
2834
  result = Nuitka_CallMethodFunctionPosArgs(
2577
2835
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 3);
2578
2836
  } else {
2579
- result = CALL_FUNCTION_WITH_POSARGS3(tstate, init_method, pos_args);
2837
+ result = CALL_FUNCTION_WITH_POS_ARGS3(tstate, init_method, pos_args);
2580
2838
  if (init_method_needs_release) {
2581
2839
  Py_DECREF(init_method);
2582
2840
  }
@@ -2651,7 +2909,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS3(PyThreadState *tstate, PyObject *called, P
2651
2909
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
2652
2910
  args, 3);
2653
2911
  } else {
2654
- result = CALL_FUNCTION_WITH_POSARGS3(tstate, init_method, pos_args);
2912
+ result = CALL_FUNCTION_WITH_POS_ARGS3(tstate, init_method, pos_args);
2655
2913
  Py_DECREF(init_method);
2656
2914
  }
2657
2915
  if (unlikely(result == NULL)) {
@@ -2808,6 +3066,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2808
3066
  }
2809
3067
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
2810
3068
  } else if (PyCFunction_CheckExact(called)) {
3069
+ #if PYTHON_VERSION >= 0x380
3070
+ #ifdef _NUITKA_FULL_COMPAT
3071
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
3072
+ return NULL;
3073
+ }
3074
+ #endif
3075
+
3076
+ int flags = PyCFunction_GET_FLAGS(called);
3077
+
3078
+ PyObject *result;
3079
+
3080
+ if (!(flags & METH_VARARGS)) {
3081
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
3082
+
3083
+ assert(func != NULL);
3084
+ result = func(called, args, 4, NULL);
3085
+
3086
+ CHECK_OBJECT_X(result);
3087
+ } else {
3088
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
3089
+ PyObject *self = PyCFunction_GET_SELF(called);
3090
+
3091
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
3092
+
3093
+ if (flags & METH_KEYWORDS) {
3094
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
3095
+ } else {
3096
+ result = (*method)(self, pos_args);
3097
+ }
3098
+
3099
+ Py_DECREF(pos_args);
3100
+ }
3101
+
3102
+ #ifdef _NUITKA_FULL_COMPAT
3103
+ Py_LeaveRecursiveCall();
3104
+ #endif
3105
+ CHECK_OBJECT_X(result);
3106
+
3107
+ return Nuitka_CheckFunctionResult(tstate, called, result);
3108
+ #else
2811
3109
  // Try to be fast about wrapping the arguments.
2812
3110
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
2813
3111
 
@@ -2833,7 +3131,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2833
3131
  PyObject *result;
2834
3132
 
2835
3133
  #if PYTHON_VERSION < 0x360
2836
- PyObject *pos_args = MAKE_TUPLE(args, 4);
3134
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
2837
3135
  if (flags & METH_KEYWORDS) {
2838
3136
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
2839
3137
  } else {
@@ -2843,19 +3141,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2843
3141
  Py_DECREF(pos_args);
2844
3142
  #else
2845
3143
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
2846
- PyObject *pos_args = MAKE_TUPLE(args, 4);
3144
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
2847
3145
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
2848
3146
  Py_DECREF(pos_args);
2849
3147
  } else if (flags == METH_FASTCALL) {
2850
3148
  #if PYTHON_VERSION < 0x370
2851
3149
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 4, NULL);
2852
3150
  #else
2853
- PyObject *pos_args = MAKE_TUPLE(args, 4);
3151
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
2854
3152
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 4);
2855
3153
  Py_DECREF(pos_args);
2856
3154
  #endif
2857
3155
  } else {
2858
- PyObject *pos_args = MAKE_TUPLE(args, 4);
3156
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
2859
3157
  result = (*method)(self, pos_args);
2860
3158
  Py_DECREF(pos_args);
2861
3159
  }
@@ -2870,7 +3168,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2870
3168
  return Nuitka_CheckFunctionResult(tstate, called, result);
2871
3169
  }
2872
3170
  #endif
2873
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
3171
+ #endif
3172
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
2874
3173
  } else if (PyFunction_Check(called)) {
2875
3174
  #if PYTHON_VERSION < 0x3b0
2876
3175
  PyObject *result = callPythonFunction(called, args, 4);
@@ -2905,7 +3204,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2905
3204
  obj = called_type->tp_alloc(called_type, 0);
2906
3205
  CHECK_OBJECT(obj);
2907
3206
  } else {
2908
- pos_args = MAKE_TUPLE(args, 4);
3207
+ pos_args = MAKE_TUPLE(tstate, args, 4);
2909
3208
  obj = called_type->tp_new(called_type, pos_args, NULL);
2910
3209
  }
2911
3210
 
@@ -2977,7 +3276,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
2977
3276
  }
2978
3277
  } else {
2979
3278
  if (pos_args == NULL) {
2980
- pos_args = MAKE_TUPLE(args, 4);
3279
+ pos_args = MAKE_TUPLE(tstate, args, 4);
2981
3280
  }
2982
3281
 
2983
3282
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -3076,7 +3375,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
3076
3375
  PRINT_NEW_LINE();
3077
3376
  #endif
3078
3377
 
3079
- PyObject *pos_args = MAKE_TUPLE(args, 4);
3378
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
3080
3379
 
3081
3380
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
3082
3381
 
@@ -3086,7 +3385,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4(PyThreadState *tstate, PyObject *called, PyOb
3086
3385
 
3087
3386
  return result;
3088
3387
  }
3089
- PyObject *CALL_FUNCTION_WITH_POSARGS4(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
3388
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS4(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
3090
3389
  assert(PyTuple_CheckExact(pos_args));
3091
3390
  assert(PyTuple_GET_SIZE(pos_args) == 4);
3092
3391
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -3201,6 +3500,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS4(PyThreadState *tstate, PyObject *called, P
3201
3500
  }
3202
3501
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
3203
3502
  } else if (PyCFunction_CheckExact(called)) {
3503
+ #if PYTHON_VERSION >= 0x380
3504
+ #ifdef _NUITKA_FULL_COMPAT
3505
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
3506
+ return NULL;
3507
+ }
3508
+ #endif
3509
+
3510
+ int flags = PyCFunction_GET_FLAGS(called);
3511
+
3512
+ PyObject *result;
3513
+
3514
+ if (!(flags & METH_VARARGS)) {
3515
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
3516
+
3517
+ assert(func != NULL);
3518
+ result = func(called, args, 4, NULL);
3519
+
3520
+ CHECK_OBJECT_X(result);
3521
+ } else {
3522
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
3523
+ PyObject *self = PyCFunction_GET_SELF(called);
3524
+
3525
+ if (flags & METH_KEYWORDS) {
3526
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
3527
+ } else {
3528
+ result = (*method)(self, pos_args);
3529
+ }
3530
+ }
3531
+
3532
+ #ifdef _NUITKA_FULL_COMPAT
3533
+ Py_LeaveRecursiveCall();
3534
+ #endif
3535
+ CHECK_OBJECT_X(result);
3536
+
3537
+ return Nuitka_CheckFunctionResult(tstate, called, result);
3538
+ #else
3204
3539
  // Try to be fast about wrapping the arguments.
3205
3540
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
3206
3541
 
@@ -3255,7 +3590,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS4(PyThreadState *tstate, PyObject *called, P
3255
3590
  return Nuitka_CheckFunctionResult(tstate, called, result);
3256
3591
  }
3257
3592
  #endif
3258
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
3593
+ #endif
3594
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
3259
3595
  } else if (PyFunction_Check(called)) {
3260
3596
  #if PYTHON_VERSION < 0x3b0
3261
3597
  PyObject *result = callPythonFunction(called, args, 4);
@@ -3336,7 +3672,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS4(PyThreadState *tstate, PyObject *called, P
3336
3672
  result = Nuitka_CallMethodFunctionPosArgs(
3337
3673
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 4);
3338
3674
  } else {
3339
- result = CALL_FUNCTION_WITH_POSARGS4(tstate, init_method, pos_args);
3675
+ result = CALL_FUNCTION_WITH_POS_ARGS4(tstate, init_method, pos_args);
3340
3676
  if (init_method_needs_release) {
3341
3677
  Py_DECREF(init_method);
3342
3678
  }
@@ -3411,7 +3747,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS4(PyThreadState *tstate, PyObject *called, P
3411
3747
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
3412
3748
  args, 4);
3413
3749
  } else {
3414
- result = CALL_FUNCTION_WITH_POSARGS4(tstate, init_method, pos_args);
3750
+ result = CALL_FUNCTION_WITH_POS_ARGS4(tstate, init_method, pos_args);
3415
3751
  Py_DECREF(init_method);
3416
3752
  }
3417
3753
  if (unlikely(result == NULL)) {
@@ -3568,6 +3904,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3568
3904
  }
3569
3905
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
3570
3906
  } else if (PyCFunction_CheckExact(called)) {
3907
+ #if PYTHON_VERSION >= 0x380
3908
+ #ifdef _NUITKA_FULL_COMPAT
3909
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
3910
+ return NULL;
3911
+ }
3912
+ #endif
3913
+
3914
+ int flags = PyCFunction_GET_FLAGS(called);
3915
+
3916
+ PyObject *result;
3917
+
3918
+ if (!(flags & METH_VARARGS)) {
3919
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
3920
+
3921
+ assert(func != NULL);
3922
+ result = func(called, args, 5, NULL);
3923
+
3924
+ CHECK_OBJECT_X(result);
3925
+ } else {
3926
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
3927
+ PyObject *self = PyCFunction_GET_SELF(called);
3928
+
3929
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3930
+
3931
+ if (flags & METH_KEYWORDS) {
3932
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
3933
+ } else {
3934
+ result = (*method)(self, pos_args);
3935
+ }
3936
+
3937
+ Py_DECREF(pos_args);
3938
+ }
3939
+
3940
+ #ifdef _NUITKA_FULL_COMPAT
3941
+ Py_LeaveRecursiveCall();
3942
+ #endif
3943
+ CHECK_OBJECT_X(result);
3944
+
3945
+ return Nuitka_CheckFunctionResult(tstate, called, result);
3946
+ #else
3571
3947
  // Try to be fast about wrapping the arguments.
3572
3948
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
3573
3949
 
@@ -3593,7 +3969,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3593
3969
  PyObject *result;
3594
3970
 
3595
3971
  #if PYTHON_VERSION < 0x360
3596
- PyObject *pos_args = MAKE_TUPLE(args, 5);
3972
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3597
3973
  if (flags & METH_KEYWORDS) {
3598
3974
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
3599
3975
  } else {
@@ -3603,19 +3979,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3603
3979
  Py_DECREF(pos_args);
3604
3980
  #else
3605
3981
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
3606
- PyObject *pos_args = MAKE_TUPLE(args, 5);
3982
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3607
3983
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
3608
3984
  Py_DECREF(pos_args);
3609
3985
  } else if (flags == METH_FASTCALL) {
3610
3986
  #if PYTHON_VERSION < 0x370
3611
3987
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 5, NULL);
3612
3988
  #else
3613
- PyObject *pos_args = MAKE_TUPLE(args, 5);
3989
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3614
3990
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 5);
3615
3991
  Py_DECREF(pos_args);
3616
3992
  #endif
3617
3993
  } else {
3618
- PyObject *pos_args = MAKE_TUPLE(args, 5);
3994
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3619
3995
  result = (*method)(self, pos_args);
3620
3996
  Py_DECREF(pos_args);
3621
3997
  }
@@ -3630,7 +4006,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3630
4006
  return Nuitka_CheckFunctionResult(tstate, called, result);
3631
4007
  }
3632
4008
  #endif
3633
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4009
+ #endif
4010
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
3634
4011
  } else if (PyFunction_Check(called)) {
3635
4012
  #if PYTHON_VERSION < 0x3b0
3636
4013
  PyObject *result = callPythonFunction(called, args, 5);
@@ -3665,7 +4042,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3665
4042
  obj = called_type->tp_alloc(called_type, 0);
3666
4043
  CHECK_OBJECT(obj);
3667
4044
  } else {
3668
- pos_args = MAKE_TUPLE(args, 5);
4045
+ pos_args = MAKE_TUPLE(tstate, args, 5);
3669
4046
  obj = called_type->tp_new(called_type, pos_args, NULL);
3670
4047
  }
3671
4048
 
@@ -3737,7 +4114,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3737
4114
  }
3738
4115
  } else {
3739
4116
  if (pos_args == NULL) {
3740
- pos_args = MAKE_TUPLE(args, 5);
4117
+ pos_args = MAKE_TUPLE(tstate, args, 5);
3741
4118
  }
3742
4119
 
3743
4120
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -3836,7 +4213,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3836
4213
  PRINT_NEW_LINE();
3837
4214
  #endif
3838
4215
 
3839
- PyObject *pos_args = MAKE_TUPLE(args, 5);
4216
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
3840
4217
 
3841
4218
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
3842
4219
 
@@ -3846,7 +4223,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5(PyThreadState *tstate, PyObject *called, PyOb
3846
4223
 
3847
4224
  return result;
3848
4225
  }
3849
- PyObject *CALL_FUNCTION_WITH_POSARGS5(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
4226
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS5(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
3850
4227
  assert(PyTuple_CheckExact(pos_args));
3851
4228
  assert(PyTuple_GET_SIZE(pos_args) == 5);
3852
4229
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -3961,6 +4338,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS5(PyThreadState *tstate, PyObject *called, P
3961
4338
  }
3962
4339
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
3963
4340
  } else if (PyCFunction_CheckExact(called)) {
4341
+ #if PYTHON_VERSION >= 0x380
4342
+ #ifdef _NUITKA_FULL_COMPAT
4343
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
4344
+ return NULL;
4345
+ }
4346
+ #endif
4347
+
4348
+ int flags = PyCFunction_GET_FLAGS(called);
4349
+
4350
+ PyObject *result;
4351
+
4352
+ if (!(flags & METH_VARARGS)) {
4353
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
4354
+
4355
+ assert(func != NULL);
4356
+ result = func(called, args, 5, NULL);
4357
+
4358
+ CHECK_OBJECT_X(result);
4359
+ } else {
4360
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
4361
+ PyObject *self = PyCFunction_GET_SELF(called);
4362
+
4363
+ if (flags & METH_KEYWORDS) {
4364
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
4365
+ } else {
4366
+ result = (*method)(self, pos_args);
4367
+ }
4368
+ }
4369
+
4370
+ #ifdef _NUITKA_FULL_COMPAT
4371
+ Py_LeaveRecursiveCall();
4372
+ #endif
4373
+ CHECK_OBJECT_X(result);
4374
+
4375
+ return Nuitka_CheckFunctionResult(tstate, called, result);
4376
+ #else
3964
4377
  // Try to be fast about wrapping the arguments.
3965
4378
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
3966
4379
 
@@ -4015,7 +4428,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS5(PyThreadState *tstate, PyObject *called, P
4015
4428
  return Nuitka_CheckFunctionResult(tstate, called, result);
4016
4429
  }
4017
4430
  #endif
4018
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4431
+ #endif
4432
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4019
4433
  } else if (PyFunction_Check(called)) {
4020
4434
  #if PYTHON_VERSION < 0x3b0
4021
4435
  PyObject *result = callPythonFunction(called, args, 5);
@@ -4096,7 +4510,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS5(PyThreadState *tstate, PyObject *called, P
4096
4510
  result = Nuitka_CallMethodFunctionPosArgs(
4097
4511
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 5);
4098
4512
  } else {
4099
- result = CALL_FUNCTION_WITH_POSARGS5(tstate, init_method, pos_args);
4513
+ result = CALL_FUNCTION_WITH_POS_ARGS5(tstate, init_method, pos_args);
4100
4514
  if (init_method_needs_release) {
4101
4515
  Py_DECREF(init_method);
4102
4516
  }
@@ -4171,7 +4585,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS5(PyThreadState *tstate, PyObject *called, P
4171
4585
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
4172
4586
  args, 5);
4173
4587
  } else {
4174
- result = CALL_FUNCTION_WITH_POSARGS5(tstate, init_method, pos_args);
4588
+ result = CALL_FUNCTION_WITH_POS_ARGS5(tstate, init_method, pos_args);
4175
4589
  Py_DECREF(init_method);
4176
4590
  }
4177
4591
  if (unlikely(result == NULL)) {
@@ -4328,6 +4742,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4328
4742
  }
4329
4743
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
4330
4744
  } else if (PyCFunction_CheckExact(called)) {
4745
+ #if PYTHON_VERSION >= 0x380
4746
+ #ifdef _NUITKA_FULL_COMPAT
4747
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
4748
+ return NULL;
4749
+ }
4750
+ #endif
4751
+
4752
+ int flags = PyCFunction_GET_FLAGS(called);
4753
+
4754
+ PyObject *result;
4755
+
4756
+ if (!(flags & METH_VARARGS)) {
4757
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
4758
+
4759
+ assert(func != NULL);
4760
+ result = func(called, args, 6, NULL);
4761
+
4762
+ CHECK_OBJECT_X(result);
4763
+ } else {
4764
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
4765
+ PyObject *self = PyCFunction_GET_SELF(called);
4766
+
4767
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4768
+
4769
+ if (flags & METH_KEYWORDS) {
4770
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
4771
+ } else {
4772
+ result = (*method)(self, pos_args);
4773
+ }
4774
+
4775
+ Py_DECREF(pos_args);
4776
+ }
4777
+
4778
+ #ifdef _NUITKA_FULL_COMPAT
4779
+ Py_LeaveRecursiveCall();
4780
+ #endif
4781
+ CHECK_OBJECT_X(result);
4782
+
4783
+ return Nuitka_CheckFunctionResult(tstate, called, result);
4784
+ #else
4331
4785
  // Try to be fast about wrapping the arguments.
4332
4786
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
4333
4787
 
@@ -4353,7 +4807,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4353
4807
  PyObject *result;
4354
4808
 
4355
4809
  #if PYTHON_VERSION < 0x360
4356
- PyObject *pos_args = MAKE_TUPLE(args, 6);
4810
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4357
4811
  if (flags & METH_KEYWORDS) {
4358
4812
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
4359
4813
  } else {
@@ -4363,19 +4817,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4363
4817
  Py_DECREF(pos_args);
4364
4818
  #else
4365
4819
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
4366
- PyObject *pos_args = MAKE_TUPLE(args, 6);
4820
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4367
4821
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
4368
4822
  Py_DECREF(pos_args);
4369
4823
  } else if (flags == METH_FASTCALL) {
4370
4824
  #if PYTHON_VERSION < 0x370
4371
4825
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 6, NULL);
4372
4826
  #else
4373
- PyObject *pos_args = MAKE_TUPLE(args, 6);
4827
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4374
4828
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 6);
4375
4829
  Py_DECREF(pos_args);
4376
4830
  #endif
4377
4831
  } else {
4378
- PyObject *pos_args = MAKE_TUPLE(args, 6);
4832
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4379
4833
  result = (*method)(self, pos_args);
4380
4834
  Py_DECREF(pos_args);
4381
4835
  }
@@ -4390,7 +4844,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4390
4844
  return Nuitka_CheckFunctionResult(tstate, called, result);
4391
4845
  }
4392
4846
  #endif
4393
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4847
+ #endif
4848
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4394
4849
  } else if (PyFunction_Check(called)) {
4395
4850
  #if PYTHON_VERSION < 0x3b0
4396
4851
  PyObject *result = callPythonFunction(called, args, 6);
@@ -4425,7 +4880,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4425
4880
  obj = called_type->tp_alloc(called_type, 0);
4426
4881
  CHECK_OBJECT(obj);
4427
4882
  } else {
4428
- pos_args = MAKE_TUPLE(args, 6);
4883
+ pos_args = MAKE_TUPLE(tstate, args, 6);
4429
4884
  obj = called_type->tp_new(called_type, pos_args, NULL);
4430
4885
  }
4431
4886
 
@@ -4497,7 +4952,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4497
4952
  }
4498
4953
  } else {
4499
4954
  if (pos_args == NULL) {
4500
- pos_args = MAKE_TUPLE(args, 6);
4955
+ pos_args = MAKE_TUPLE(tstate, args, 6);
4501
4956
  }
4502
4957
 
4503
4958
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -4596,7 +5051,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4596
5051
  PRINT_NEW_LINE();
4597
5052
  #endif
4598
5053
 
4599
- PyObject *pos_args = MAKE_TUPLE(args, 6);
5054
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
4600
5055
 
4601
5056
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
4602
5057
 
@@ -4606,7 +5061,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6(PyThreadState *tstate, PyObject *called, PyOb
4606
5061
 
4607
5062
  return result;
4608
5063
  }
4609
- PyObject *CALL_FUNCTION_WITH_POSARGS6(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
5064
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS6(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
4610
5065
  assert(PyTuple_CheckExact(pos_args));
4611
5066
  assert(PyTuple_GET_SIZE(pos_args) == 6);
4612
5067
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -4721,6 +5176,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS6(PyThreadState *tstate, PyObject *called, P
4721
5176
  }
4722
5177
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
4723
5178
  } else if (PyCFunction_CheckExact(called)) {
5179
+ #if PYTHON_VERSION >= 0x380
5180
+ #ifdef _NUITKA_FULL_COMPAT
5181
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
5182
+ return NULL;
5183
+ }
5184
+ #endif
5185
+
5186
+ int flags = PyCFunction_GET_FLAGS(called);
5187
+
5188
+ PyObject *result;
5189
+
5190
+ if (!(flags & METH_VARARGS)) {
5191
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
5192
+
5193
+ assert(func != NULL);
5194
+ result = func(called, args, 6, NULL);
5195
+
5196
+ CHECK_OBJECT_X(result);
5197
+ } else {
5198
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
5199
+ PyObject *self = PyCFunction_GET_SELF(called);
5200
+
5201
+ if (flags & METH_KEYWORDS) {
5202
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
5203
+ } else {
5204
+ result = (*method)(self, pos_args);
5205
+ }
5206
+ }
5207
+
5208
+ #ifdef _NUITKA_FULL_COMPAT
5209
+ Py_LeaveRecursiveCall();
5210
+ #endif
5211
+ CHECK_OBJECT_X(result);
5212
+
5213
+ return Nuitka_CheckFunctionResult(tstate, called, result);
5214
+ #else
4724
5215
  // Try to be fast about wrapping the arguments.
4725
5216
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
4726
5217
 
@@ -4775,7 +5266,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS6(PyThreadState *tstate, PyObject *called, P
4775
5266
  return Nuitka_CheckFunctionResult(tstate, called, result);
4776
5267
  }
4777
5268
  #endif
4778
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
5269
+ #endif
5270
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
4779
5271
  } else if (PyFunction_Check(called)) {
4780
5272
  #if PYTHON_VERSION < 0x3b0
4781
5273
  PyObject *result = callPythonFunction(called, args, 6);
@@ -4856,7 +5348,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS6(PyThreadState *tstate, PyObject *called, P
4856
5348
  result = Nuitka_CallMethodFunctionPosArgs(
4857
5349
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 6);
4858
5350
  } else {
4859
- result = CALL_FUNCTION_WITH_POSARGS6(tstate, init_method, pos_args);
5351
+ result = CALL_FUNCTION_WITH_POS_ARGS6(tstate, init_method, pos_args);
4860
5352
  if (init_method_needs_release) {
4861
5353
  Py_DECREF(init_method);
4862
5354
  }
@@ -4931,7 +5423,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS6(PyThreadState *tstate, PyObject *called, P
4931
5423
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
4932
5424
  args, 6);
4933
5425
  } else {
4934
- result = CALL_FUNCTION_WITH_POSARGS6(tstate, init_method, pos_args);
5426
+ result = CALL_FUNCTION_WITH_POS_ARGS6(tstate, init_method, pos_args);
4935
5427
  Py_DECREF(init_method);
4936
5428
  }
4937
5429
  if (unlikely(result == NULL)) {
@@ -5086,8 +5578,48 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5086
5578
 
5087
5579
  return result;
5088
5580
  }
5089
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
5090
- } else if (PyCFunction_CheckExact(called)) {
5581
+ #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
5582
+ } else if (PyCFunction_CheckExact(called)) {
5583
+ #if PYTHON_VERSION >= 0x380
5584
+ #ifdef _NUITKA_FULL_COMPAT
5585
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
5586
+ return NULL;
5587
+ }
5588
+ #endif
5589
+
5590
+ int flags = PyCFunction_GET_FLAGS(called);
5591
+
5592
+ PyObject *result;
5593
+
5594
+ if (!(flags & METH_VARARGS)) {
5595
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
5596
+
5597
+ assert(func != NULL);
5598
+ result = func(called, args, 7, NULL);
5599
+
5600
+ CHECK_OBJECT_X(result);
5601
+ } else {
5602
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
5603
+ PyObject *self = PyCFunction_GET_SELF(called);
5604
+
5605
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5606
+
5607
+ if (flags & METH_KEYWORDS) {
5608
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
5609
+ } else {
5610
+ result = (*method)(self, pos_args);
5611
+ }
5612
+
5613
+ Py_DECREF(pos_args);
5614
+ }
5615
+
5616
+ #ifdef _NUITKA_FULL_COMPAT
5617
+ Py_LeaveRecursiveCall();
5618
+ #endif
5619
+ CHECK_OBJECT_X(result);
5620
+
5621
+ return Nuitka_CheckFunctionResult(tstate, called, result);
5622
+ #else
5091
5623
  // Try to be fast about wrapping the arguments.
5092
5624
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
5093
5625
 
@@ -5113,7 +5645,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5113
5645
  PyObject *result;
5114
5646
 
5115
5647
  #if PYTHON_VERSION < 0x360
5116
- PyObject *pos_args = MAKE_TUPLE(args, 7);
5648
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5117
5649
  if (flags & METH_KEYWORDS) {
5118
5650
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
5119
5651
  } else {
@@ -5123,19 +5655,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5123
5655
  Py_DECREF(pos_args);
5124
5656
  #else
5125
5657
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
5126
- PyObject *pos_args = MAKE_TUPLE(args, 7);
5658
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5127
5659
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
5128
5660
  Py_DECREF(pos_args);
5129
5661
  } else if (flags == METH_FASTCALL) {
5130
5662
  #if PYTHON_VERSION < 0x370
5131
5663
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 7, NULL);
5132
5664
  #else
5133
- PyObject *pos_args = MAKE_TUPLE(args, 7);
5665
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5134
5666
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 7);
5135
5667
  Py_DECREF(pos_args);
5136
5668
  #endif
5137
5669
  } else {
5138
- PyObject *pos_args = MAKE_TUPLE(args, 7);
5670
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5139
5671
  result = (*method)(self, pos_args);
5140
5672
  Py_DECREF(pos_args);
5141
5673
  }
@@ -5150,7 +5682,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5150
5682
  return Nuitka_CheckFunctionResult(tstate, called, result);
5151
5683
  }
5152
5684
  #endif
5153
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
5685
+ #endif
5686
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
5154
5687
  } else if (PyFunction_Check(called)) {
5155
5688
  #if PYTHON_VERSION < 0x3b0
5156
5689
  PyObject *result = callPythonFunction(called, args, 7);
@@ -5185,7 +5718,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5185
5718
  obj = called_type->tp_alloc(called_type, 0);
5186
5719
  CHECK_OBJECT(obj);
5187
5720
  } else {
5188
- pos_args = MAKE_TUPLE(args, 7);
5721
+ pos_args = MAKE_TUPLE(tstate, args, 7);
5189
5722
  obj = called_type->tp_new(called_type, pos_args, NULL);
5190
5723
  }
5191
5724
 
@@ -5257,7 +5790,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5257
5790
  }
5258
5791
  } else {
5259
5792
  if (pos_args == NULL) {
5260
- pos_args = MAKE_TUPLE(args, 7);
5793
+ pos_args = MAKE_TUPLE(tstate, args, 7);
5261
5794
  }
5262
5795
 
5263
5796
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -5356,7 +5889,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5356
5889
  PRINT_NEW_LINE();
5357
5890
  #endif
5358
5891
 
5359
- PyObject *pos_args = MAKE_TUPLE(args, 7);
5892
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
5360
5893
 
5361
5894
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
5362
5895
 
@@ -5366,7 +5899,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7(PyThreadState *tstate, PyObject *called, PyOb
5366
5899
 
5367
5900
  return result;
5368
5901
  }
5369
- PyObject *CALL_FUNCTION_WITH_POSARGS7(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
5902
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS7(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
5370
5903
  assert(PyTuple_CheckExact(pos_args));
5371
5904
  assert(PyTuple_GET_SIZE(pos_args) == 7);
5372
5905
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -5481,6 +6014,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS7(PyThreadState *tstate, PyObject *called, P
5481
6014
  }
5482
6015
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
5483
6016
  } else if (PyCFunction_CheckExact(called)) {
6017
+ #if PYTHON_VERSION >= 0x380
6018
+ #ifdef _NUITKA_FULL_COMPAT
6019
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
6020
+ return NULL;
6021
+ }
6022
+ #endif
6023
+
6024
+ int flags = PyCFunction_GET_FLAGS(called);
6025
+
6026
+ PyObject *result;
6027
+
6028
+ if (!(flags & METH_VARARGS)) {
6029
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
6030
+
6031
+ assert(func != NULL);
6032
+ result = func(called, args, 7, NULL);
6033
+
6034
+ CHECK_OBJECT_X(result);
6035
+ } else {
6036
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
6037
+ PyObject *self = PyCFunction_GET_SELF(called);
6038
+
6039
+ if (flags & METH_KEYWORDS) {
6040
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
6041
+ } else {
6042
+ result = (*method)(self, pos_args);
6043
+ }
6044
+ }
6045
+
6046
+ #ifdef _NUITKA_FULL_COMPAT
6047
+ Py_LeaveRecursiveCall();
6048
+ #endif
6049
+ CHECK_OBJECT_X(result);
6050
+
6051
+ return Nuitka_CheckFunctionResult(tstate, called, result);
6052
+ #else
5484
6053
  // Try to be fast about wrapping the arguments.
5485
6054
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
5486
6055
 
@@ -5535,7 +6104,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS7(PyThreadState *tstate, PyObject *called, P
5535
6104
  return Nuitka_CheckFunctionResult(tstate, called, result);
5536
6105
  }
5537
6106
  #endif
5538
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
6107
+ #endif
6108
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
5539
6109
  } else if (PyFunction_Check(called)) {
5540
6110
  #if PYTHON_VERSION < 0x3b0
5541
6111
  PyObject *result = callPythonFunction(called, args, 7);
@@ -5616,7 +6186,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS7(PyThreadState *tstate, PyObject *called, P
5616
6186
  result = Nuitka_CallMethodFunctionPosArgs(
5617
6187
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 7);
5618
6188
  } else {
5619
- result = CALL_FUNCTION_WITH_POSARGS7(tstate, init_method, pos_args);
6189
+ result = CALL_FUNCTION_WITH_POS_ARGS7(tstate, init_method, pos_args);
5620
6190
  if (init_method_needs_release) {
5621
6191
  Py_DECREF(init_method);
5622
6192
  }
@@ -5691,7 +6261,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS7(PyThreadState *tstate, PyObject *called, P
5691
6261
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
5692
6262
  args, 7);
5693
6263
  } else {
5694
- result = CALL_FUNCTION_WITH_POSARGS7(tstate, init_method, pos_args);
6264
+ result = CALL_FUNCTION_WITH_POS_ARGS7(tstate, init_method, pos_args);
5695
6265
  Py_DECREF(init_method);
5696
6266
  }
5697
6267
  if (unlikely(result == NULL)) {
@@ -5848,6 +6418,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
5848
6418
  }
5849
6419
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
5850
6420
  } else if (PyCFunction_CheckExact(called)) {
6421
+ #if PYTHON_VERSION >= 0x380
6422
+ #ifdef _NUITKA_FULL_COMPAT
6423
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
6424
+ return NULL;
6425
+ }
6426
+ #endif
6427
+
6428
+ int flags = PyCFunction_GET_FLAGS(called);
6429
+
6430
+ PyObject *result;
6431
+
6432
+ if (!(flags & METH_VARARGS)) {
6433
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
6434
+
6435
+ assert(func != NULL);
6436
+ result = func(called, args, 8, NULL);
6437
+
6438
+ CHECK_OBJECT_X(result);
6439
+ } else {
6440
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
6441
+ PyObject *self = PyCFunction_GET_SELF(called);
6442
+
6443
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
6444
+
6445
+ if (flags & METH_KEYWORDS) {
6446
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
6447
+ } else {
6448
+ result = (*method)(self, pos_args);
6449
+ }
6450
+
6451
+ Py_DECREF(pos_args);
6452
+ }
6453
+
6454
+ #ifdef _NUITKA_FULL_COMPAT
6455
+ Py_LeaveRecursiveCall();
6456
+ #endif
6457
+ CHECK_OBJECT_X(result);
6458
+
6459
+ return Nuitka_CheckFunctionResult(tstate, called, result);
6460
+ #else
5851
6461
  // Try to be fast about wrapping the arguments.
5852
6462
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
5853
6463
 
@@ -5873,7 +6483,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
5873
6483
  PyObject *result;
5874
6484
 
5875
6485
  #if PYTHON_VERSION < 0x360
5876
- PyObject *pos_args = MAKE_TUPLE(args, 8);
6486
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
5877
6487
  if (flags & METH_KEYWORDS) {
5878
6488
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
5879
6489
  } else {
@@ -5883,19 +6493,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
5883
6493
  Py_DECREF(pos_args);
5884
6494
  #else
5885
6495
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
5886
- PyObject *pos_args = MAKE_TUPLE(args, 8);
6496
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
5887
6497
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
5888
6498
  Py_DECREF(pos_args);
5889
6499
  } else if (flags == METH_FASTCALL) {
5890
6500
  #if PYTHON_VERSION < 0x370
5891
6501
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 8, NULL);
5892
6502
  #else
5893
- PyObject *pos_args = MAKE_TUPLE(args, 8);
6503
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
5894
6504
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 8);
5895
6505
  Py_DECREF(pos_args);
5896
6506
  #endif
5897
6507
  } else {
5898
- PyObject *pos_args = MAKE_TUPLE(args, 8);
6508
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
5899
6509
  result = (*method)(self, pos_args);
5900
6510
  Py_DECREF(pos_args);
5901
6511
  }
@@ -5910,7 +6520,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
5910
6520
  return Nuitka_CheckFunctionResult(tstate, called, result);
5911
6521
  }
5912
6522
  #endif
5913
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
6523
+ #endif
6524
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
5914
6525
  } else if (PyFunction_Check(called)) {
5915
6526
  #if PYTHON_VERSION < 0x3b0
5916
6527
  PyObject *result = callPythonFunction(called, args, 8);
@@ -5945,7 +6556,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
5945
6556
  obj = called_type->tp_alloc(called_type, 0);
5946
6557
  CHECK_OBJECT(obj);
5947
6558
  } else {
5948
- pos_args = MAKE_TUPLE(args, 8);
6559
+ pos_args = MAKE_TUPLE(tstate, args, 8);
5949
6560
  obj = called_type->tp_new(called_type, pos_args, NULL);
5950
6561
  }
5951
6562
 
@@ -6017,7 +6628,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
6017
6628
  }
6018
6629
  } else {
6019
6630
  if (pos_args == NULL) {
6020
- pos_args = MAKE_TUPLE(args, 8);
6631
+ pos_args = MAKE_TUPLE(tstate, args, 8);
6021
6632
  }
6022
6633
 
6023
6634
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -6116,7 +6727,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
6116
6727
  PRINT_NEW_LINE();
6117
6728
  #endif
6118
6729
 
6119
- PyObject *pos_args = MAKE_TUPLE(args, 8);
6730
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
6120
6731
 
6121
6732
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
6122
6733
 
@@ -6126,7 +6737,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8(PyThreadState *tstate, PyObject *called, PyOb
6126
6737
 
6127
6738
  return result;
6128
6739
  }
6129
- PyObject *CALL_FUNCTION_WITH_POSARGS8(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
6740
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS8(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
6130
6741
  assert(PyTuple_CheckExact(pos_args));
6131
6742
  assert(PyTuple_GET_SIZE(pos_args) == 8);
6132
6743
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -6241,6 +6852,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS8(PyThreadState *tstate, PyObject *called, P
6241
6852
  }
6242
6853
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
6243
6854
  } else if (PyCFunction_CheckExact(called)) {
6855
+ #if PYTHON_VERSION >= 0x380
6856
+ #ifdef _NUITKA_FULL_COMPAT
6857
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
6858
+ return NULL;
6859
+ }
6860
+ #endif
6861
+
6862
+ int flags = PyCFunction_GET_FLAGS(called);
6863
+
6864
+ PyObject *result;
6865
+
6866
+ if (!(flags & METH_VARARGS)) {
6867
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
6868
+
6869
+ assert(func != NULL);
6870
+ result = func(called, args, 8, NULL);
6871
+
6872
+ CHECK_OBJECT_X(result);
6873
+ } else {
6874
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
6875
+ PyObject *self = PyCFunction_GET_SELF(called);
6876
+
6877
+ if (flags & METH_KEYWORDS) {
6878
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
6879
+ } else {
6880
+ result = (*method)(self, pos_args);
6881
+ }
6882
+ }
6883
+
6884
+ #ifdef _NUITKA_FULL_COMPAT
6885
+ Py_LeaveRecursiveCall();
6886
+ #endif
6887
+ CHECK_OBJECT_X(result);
6888
+
6889
+ return Nuitka_CheckFunctionResult(tstate, called, result);
6890
+ #else
6244
6891
  // Try to be fast about wrapping the arguments.
6245
6892
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
6246
6893
 
@@ -6295,7 +6942,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS8(PyThreadState *tstate, PyObject *called, P
6295
6942
  return Nuitka_CheckFunctionResult(tstate, called, result);
6296
6943
  }
6297
6944
  #endif
6298
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
6945
+ #endif
6946
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
6299
6947
  } else if (PyFunction_Check(called)) {
6300
6948
  #if PYTHON_VERSION < 0x3b0
6301
6949
  PyObject *result = callPythonFunction(called, args, 8);
@@ -6376,7 +7024,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS8(PyThreadState *tstate, PyObject *called, P
6376
7024
  result = Nuitka_CallMethodFunctionPosArgs(
6377
7025
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 8);
6378
7026
  } else {
6379
- result = CALL_FUNCTION_WITH_POSARGS8(tstate, init_method, pos_args);
7027
+ result = CALL_FUNCTION_WITH_POS_ARGS8(tstate, init_method, pos_args);
6380
7028
  if (init_method_needs_release) {
6381
7029
  Py_DECREF(init_method);
6382
7030
  }
@@ -6451,7 +7099,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS8(PyThreadState *tstate, PyObject *called, P
6451
7099
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
6452
7100
  args, 8);
6453
7101
  } else {
6454
- result = CALL_FUNCTION_WITH_POSARGS8(tstate, init_method, pos_args);
7102
+ result = CALL_FUNCTION_WITH_POS_ARGS8(tstate, init_method, pos_args);
6455
7103
  Py_DECREF(init_method);
6456
7104
  }
6457
7105
  if (unlikely(result == NULL)) {
@@ -6608,6 +7256,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6608
7256
  }
6609
7257
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
6610
7258
  } else if (PyCFunction_CheckExact(called)) {
7259
+ #if PYTHON_VERSION >= 0x380
7260
+ #ifdef _NUITKA_FULL_COMPAT
7261
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
7262
+ return NULL;
7263
+ }
7264
+ #endif
7265
+
7266
+ int flags = PyCFunction_GET_FLAGS(called);
7267
+
7268
+ PyObject *result;
7269
+
7270
+ if (!(flags & METH_VARARGS)) {
7271
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
7272
+
7273
+ assert(func != NULL);
7274
+ result = func(called, args, 9, NULL);
7275
+
7276
+ CHECK_OBJECT_X(result);
7277
+ } else {
7278
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
7279
+ PyObject *self = PyCFunction_GET_SELF(called);
7280
+
7281
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
7282
+
7283
+ if (flags & METH_KEYWORDS) {
7284
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
7285
+ } else {
7286
+ result = (*method)(self, pos_args);
7287
+ }
7288
+
7289
+ Py_DECREF(pos_args);
7290
+ }
7291
+
7292
+ #ifdef _NUITKA_FULL_COMPAT
7293
+ Py_LeaveRecursiveCall();
7294
+ #endif
7295
+ CHECK_OBJECT_X(result);
7296
+
7297
+ return Nuitka_CheckFunctionResult(tstate, called, result);
7298
+ #else
6611
7299
  // Try to be fast about wrapping the arguments.
6612
7300
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
6613
7301
 
@@ -6633,7 +7321,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6633
7321
  PyObject *result;
6634
7322
 
6635
7323
  #if PYTHON_VERSION < 0x360
6636
- PyObject *pos_args = MAKE_TUPLE(args, 9);
7324
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
6637
7325
  if (flags & METH_KEYWORDS) {
6638
7326
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
6639
7327
  } else {
@@ -6643,19 +7331,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6643
7331
  Py_DECREF(pos_args);
6644
7332
  #else
6645
7333
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
6646
- PyObject *pos_args = MAKE_TUPLE(args, 9);
7334
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
6647
7335
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
6648
7336
  Py_DECREF(pos_args);
6649
7337
  } else if (flags == METH_FASTCALL) {
6650
7338
  #if PYTHON_VERSION < 0x370
6651
7339
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 9, NULL);
6652
7340
  #else
6653
- PyObject *pos_args = MAKE_TUPLE(args, 9);
7341
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
6654
7342
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 9);
6655
7343
  Py_DECREF(pos_args);
6656
7344
  #endif
6657
7345
  } else {
6658
- PyObject *pos_args = MAKE_TUPLE(args, 9);
7346
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
6659
7347
  result = (*method)(self, pos_args);
6660
7348
  Py_DECREF(pos_args);
6661
7349
  }
@@ -6670,7 +7358,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6670
7358
  return Nuitka_CheckFunctionResult(tstate, called, result);
6671
7359
  }
6672
7360
  #endif
6673
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
7361
+ #endif
7362
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
6674
7363
  } else if (PyFunction_Check(called)) {
6675
7364
  #if PYTHON_VERSION < 0x3b0
6676
7365
  PyObject *result = callPythonFunction(called, args, 9);
@@ -6705,7 +7394,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6705
7394
  obj = called_type->tp_alloc(called_type, 0);
6706
7395
  CHECK_OBJECT(obj);
6707
7396
  } else {
6708
- pos_args = MAKE_TUPLE(args, 9);
7397
+ pos_args = MAKE_TUPLE(tstate, args, 9);
6709
7398
  obj = called_type->tp_new(called_type, pos_args, NULL);
6710
7399
  }
6711
7400
 
@@ -6777,7 +7466,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6777
7466
  }
6778
7467
  } else {
6779
7468
  if (pos_args == NULL) {
6780
- pos_args = MAKE_TUPLE(args, 9);
7469
+ pos_args = MAKE_TUPLE(tstate, args, 9);
6781
7470
  }
6782
7471
 
6783
7472
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -6876,7 +7565,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6876
7565
  PRINT_NEW_LINE();
6877
7566
  #endif
6878
7567
 
6879
- PyObject *pos_args = MAKE_TUPLE(args, 9);
7568
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
6880
7569
 
6881
7570
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
6882
7571
 
@@ -6886,7 +7575,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9(PyThreadState *tstate, PyObject *called, PyOb
6886
7575
 
6887
7576
  return result;
6888
7577
  }
6889
- PyObject *CALL_FUNCTION_WITH_POSARGS9(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
7578
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS9(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
6890
7579
  assert(PyTuple_CheckExact(pos_args));
6891
7580
  assert(PyTuple_GET_SIZE(pos_args) == 9);
6892
7581
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -7001,6 +7690,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS9(PyThreadState *tstate, PyObject *called, P
7001
7690
  }
7002
7691
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
7003
7692
  } else if (PyCFunction_CheckExact(called)) {
7693
+ #if PYTHON_VERSION >= 0x380
7694
+ #ifdef _NUITKA_FULL_COMPAT
7695
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
7696
+ return NULL;
7697
+ }
7698
+ #endif
7699
+
7700
+ int flags = PyCFunction_GET_FLAGS(called);
7701
+
7702
+ PyObject *result;
7703
+
7704
+ if (!(flags & METH_VARARGS)) {
7705
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
7706
+
7707
+ assert(func != NULL);
7708
+ result = func(called, args, 9, NULL);
7709
+
7710
+ CHECK_OBJECT_X(result);
7711
+ } else {
7712
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
7713
+ PyObject *self = PyCFunction_GET_SELF(called);
7714
+
7715
+ if (flags & METH_KEYWORDS) {
7716
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
7717
+ } else {
7718
+ result = (*method)(self, pos_args);
7719
+ }
7720
+ }
7721
+
7722
+ #ifdef _NUITKA_FULL_COMPAT
7723
+ Py_LeaveRecursiveCall();
7724
+ #endif
7725
+ CHECK_OBJECT_X(result);
7726
+
7727
+ return Nuitka_CheckFunctionResult(tstate, called, result);
7728
+ #else
7004
7729
  // Try to be fast about wrapping the arguments.
7005
7730
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
7006
7731
 
@@ -7055,7 +7780,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS9(PyThreadState *tstate, PyObject *called, P
7055
7780
  return Nuitka_CheckFunctionResult(tstate, called, result);
7056
7781
  }
7057
7782
  #endif
7058
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
7783
+ #endif
7784
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
7059
7785
  } else if (PyFunction_Check(called)) {
7060
7786
  #if PYTHON_VERSION < 0x3b0
7061
7787
  PyObject *result = callPythonFunction(called, args, 9);
@@ -7136,7 +7862,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS9(PyThreadState *tstate, PyObject *called, P
7136
7862
  result = Nuitka_CallMethodFunctionPosArgs(
7137
7863
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 9);
7138
7864
  } else {
7139
- result = CALL_FUNCTION_WITH_POSARGS9(tstate, init_method, pos_args);
7865
+ result = CALL_FUNCTION_WITH_POS_ARGS9(tstate, init_method, pos_args);
7140
7866
  if (init_method_needs_release) {
7141
7867
  Py_DECREF(init_method);
7142
7868
  }
@@ -7211,7 +7937,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS9(PyThreadState *tstate, PyObject *called, P
7211
7937
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
7212
7938
  args, 9);
7213
7939
  } else {
7214
- result = CALL_FUNCTION_WITH_POSARGS9(tstate, init_method, pos_args);
7940
+ result = CALL_FUNCTION_WITH_POS_ARGS9(tstate, init_method, pos_args);
7215
7941
  Py_DECREF(init_method);
7216
7942
  }
7217
7943
  if (unlikely(result == NULL)) {
@@ -7368,6 +8094,46 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7368
8094
  }
7369
8095
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
7370
8096
  } else if (PyCFunction_CheckExact(called)) {
8097
+ #if PYTHON_VERSION >= 0x380
8098
+ #ifdef _NUITKA_FULL_COMPAT
8099
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
8100
+ return NULL;
8101
+ }
8102
+ #endif
8103
+
8104
+ int flags = PyCFunction_GET_FLAGS(called);
8105
+
8106
+ PyObject *result;
8107
+
8108
+ if (!(flags & METH_VARARGS)) {
8109
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
8110
+
8111
+ assert(func != NULL);
8112
+ result = func(called, args, 10, NULL);
8113
+
8114
+ CHECK_OBJECT_X(result);
8115
+ } else {
8116
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
8117
+ PyObject *self = PyCFunction_GET_SELF(called);
8118
+
8119
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
8120
+
8121
+ if (flags & METH_KEYWORDS) {
8122
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
8123
+ } else {
8124
+ result = (*method)(self, pos_args);
8125
+ }
8126
+
8127
+ Py_DECREF(pos_args);
8128
+ }
8129
+
8130
+ #ifdef _NUITKA_FULL_COMPAT
8131
+ Py_LeaveRecursiveCall();
8132
+ #endif
8133
+ CHECK_OBJECT_X(result);
8134
+
8135
+ return Nuitka_CheckFunctionResult(tstate, called, result);
8136
+ #else
7371
8137
  // Try to be fast about wrapping the arguments.
7372
8138
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
7373
8139
 
@@ -7393,7 +8159,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7393
8159
  PyObject *result;
7394
8160
 
7395
8161
  #if PYTHON_VERSION < 0x360
7396
- PyObject *pos_args = MAKE_TUPLE(args, 10);
8162
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
7397
8163
  if (flags & METH_KEYWORDS) {
7398
8164
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
7399
8165
  } else {
@@ -7403,19 +8169,19 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7403
8169
  Py_DECREF(pos_args);
7404
8170
  #else
7405
8171
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
7406
- PyObject *pos_args = MAKE_TUPLE(args, 10);
8172
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
7407
8173
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
7408
8174
  Py_DECREF(pos_args);
7409
8175
  } else if (flags == METH_FASTCALL) {
7410
8176
  #if PYTHON_VERSION < 0x370
7411
8177
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args, 10, NULL);
7412
8178
  #else
7413
- PyObject *pos_args = MAKE_TUPLE(args, 10);
8179
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
7414
8180
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 10);
7415
8181
  Py_DECREF(pos_args);
7416
8182
  #endif
7417
8183
  } else {
7418
- PyObject *pos_args = MAKE_TUPLE(args, 10);
8184
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
7419
8185
  result = (*method)(self, pos_args);
7420
8186
  Py_DECREF(pos_args);
7421
8187
  }
@@ -7430,7 +8196,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7430
8196
  return Nuitka_CheckFunctionResult(tstate, called, result);
7431
8197
  }
7432
8198
  #endif
7433
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
8199
+ #endif
8200
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
7434
8201
  } else if (PyFunction_Check(called)) {
7435
8202
  #if PYTHON_VERSION < 0x3b0
7436
8203
  PyObject *result = callPythonFunction(called, args, 10);
@@ -7465,7 +8232,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7465
8232
  obj = called_type->tp_alloc(called_type, 0);
7466
8233
  CHECK_OBJECT(obj);
7467
8234
  } else {
7468
- pos_args = MAKE_TUPLE(args, 10);
8235
+ pos_args = MAKE_TUPLE(tstate, args, 10);
7469
8236
  obj = called_type->tp_new(called_type, pos_args, NULL);
7470
8237
  }
7471
8238
 
@@ -7537,7 +8304,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7537
8304
  }
7538
8305
  } else {
7539
8306
  if (pos_args == NULL) {
7540
- pos_args = MAKE_TUPLE(args, 10);
8307
+ pos_args = MAKE_TUPLE(tstate, args, 10);
7541
8308
  }
7542
8309
 
7543
8310
  if (unlikely(type->tp_init(obj, pos_args, NULL) < 0)) {
@@ -7636,7 +8403,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7636
8403
  PRINT_NEW_LINE();
7637
8404
  #endif
7638
8405
 
7639
- PyObject *pos_args = MAKE_TUPLE(args, 10);
8406
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
7640
8407
 
7641
8408
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
7642
8409
 
@@ -7646,7 +8413,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10(PyThreadState *tstate, PyObject *called, PyO
7646
8413
 
7647
8414
  return result;
7648
8415
  }
7649
- PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
8416
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS10(PyThreadState *tstate, PyObject *called, PyObject *pos_args) {
7650
8417
  assert(PyTuple_CheckExact(pos_args));
7651
8418
  assert(PyTuple_GET_SIZE(pos_args) == 10);
7652
8419
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
@@ -7761,6 +8528,42 @@ PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called,
7761
8528
  }
7762
8529
  #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_CFUNCTION_CALL_OPT)
7763
8530
  } else if (PyCFunction_CheckExact(called)) {
8531
+ #if PYTHON_VERSION >= 0x380
8532
+ #ifdef _NUITKA_FULL_COMPAT
8533
+ if (unlikely(Py_EnterRecursiveCall((char *)" while calling a Python object"))) {
8534
+ return NULL;
8535
+ }
8536
+ #endif
8537
+
8538
+ int flags = PyCFunction_GET_FLAGS(called);
8539
+
8540
+ PyObject *result;
8541
+
8542
+ if (!(flags & METH_VARARGS)) {
8543
+ vectorcallfunc func = *((vectorcallfunc *)(((char *)called) + Py_TYPE(called)->tp_vectorcall_offset));
8544
+
8545
+ assert(func != NULL);
8546
+ result = func(called, args, 10, NULL);
8547
+
8548
+ CHECK_OBJECT_X(result);
8549
+ } else {
8550
+ PyCFunction method = PyCFunction_GET_FUNCTION(called);
8551
+ PyObject *self = PyCFunction_GET_SELF(called);
8552
+
8553
+ if (flags & METH_KEYWORDS) {
8554
+ result = (*(PyCFunctionWithKeywords)(void (*)(void))method)(self, pos_args, NULL);
8555
+ } else {
8556
+ result = (*method)(self, pos_args);
8557
+ }
8558
+ }
8559
+
8560
+ #ifdef _NUITKA_FULL_COMPAT
8561
+ Py_LeaveRecursiveCall();
8562
+ #endif
8563
+ CHECK_OBJECT_X(result);
8564
+
8565
+ return Nuitka_CheckFunctionResult(tstate, called, result);
8566
+ #else
7764
8567
  // Try to be fast about wrapping the arguments.
7765
8568
  int flags = PyCFunction_GET_FLAGS(called) & ~(METH_CLASS | METH_STATIC | METH_COEXIST);
7766
8569
 
@@ -7815,7 +8618,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called,
7815
8618
  return Nuitka_CheckFunctionResult(tstate, called, result);
7816
8619
  }
7817
8620
  #endif
7818
- #if !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
8621
+ #endif
8622
+ #if PYTHON_VERSION < 0x380 && !defined(_NUITKA_EXPERIMENTAL_DISABLE_UNCOMPILED_FUNCTION_CALL_OPT)
7819
8623
  } else if (PyFunction_Check(called)) {
7820
8624
  #if PYTHON_VERSION < 0x3b0
7821
8625
  PyObject *result = callPythonFunction(called, args, 10);
@@ -7896,7 +8700,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called,
7896
8700
  result = Nuitka_CallMethodFunctionPosArgs(
7897
8701
  tstate, (struct Nuitka_FunctionObject const *)init_method, obj, args, 10);
7898
8702
  } else {
7899
- result = CALL_FUNCTION_WITH_POSARGS10(tstate, init_method, pos_args);
8703
+ result = CALL_FUNCTION_WITH_POS_ARGS10(tstate, init_method, pos_args);
7900
8704
  if (init_method_needs_release) {
7901
8705
  Py_DECREF(init_method);
7902
8706
  }
@@ -7971,7 +8775,7 @@ PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called,
7971
8775
  result = Nuitka_CallMethodFunctionPosArgs(tstate, (struct Nuitka_FunctionObject const *)init_method, obj,
7972
8776
  args, 10);
7973
8777
  } else {
7974
- result = CALL_FUNCTION_WITH_POSARGS10(tstate, init_method, pos_args);
8778
+ result = CALL_FUNCTION_WITH_POS_ARGS10(tstate, init_method, pos_args);
7975
8779
  Py_DECREF(init_method);
7976
8780
  }
7977
8781
  if (unlikely(result == NULL)) {
@@ -8016,8 +8820,8 @@ PyObject *CALL_FUNCTION_WITH_POSARGS10(PyThreadState *tstate, PyObject *called,
8016
8820
 
8017
8821
  return result;
8018
8822
  }
8019
- PyObject *CALL_FUNCTION_WITH_NO_ARGS_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *kw_values,
8020
- PyObject *kw_names) {
8823
+ PyObject *CALL_FUNCTION_WITH_NO_ARGS_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *kw_values,
8824
+ PyObject *kw_names) {
8021
8825
 
8022
8826
  CHECK_OBJECT(kw_names);
8023
8827
  assert(PyTuple_CheckExact(kw_names));
@@ -8156,7 +8960,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS1_VECTORCALL(PyThreadState *tstate, PyObject *c
8156
8960
  return NULL;
8157
8961
  }
8158
8962
 
8159
- PyObject *pos_args = MAKE_TUPLE(args, 1);
8963
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
8160
8964
 
8161
8965
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8162
8966
 
@@ -8182,8 +8986,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS1_VECTORCALL(PyThreadState *tstate, PyObject *c
8182
8986
 
8183
8987
  return Nuitka_CheckFunctionResult(tstate, called, result);
8184
8988
  }
8185
- PyObject *CALL_FUNCTION_WITH_ARGS1_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
8186
- PyObject *const *kw_values, PyObject *kw_names) {
8989
+ PyObject *CALL_FUNCTION_WITH_ARGS1_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
8990
+ PyObject *const *kw_values, PyObject *kw_names) {
8187
8991
  CHECK_OBJECTS(args, 1);
8188
8992
  CHECK_OBJECT(kw_names);
8189
8993
  assert(PyTuple_CheckExact(kw_names));
@@ -8244,7 +9048,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS1_KWSPLIT(PyThreadState *tstate, PyObject *call
8244
9048
  return NULL;
8245
9049
  }
8246
9050
 
8247
- PyObject *pos_args = MAKE_TUPLE(args, 1);
9051
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
8248
9052
 
8249
9053
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8250
9054
 
@@ -8270,8 +9074,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS1_KWSPLIT(PyThreadState *tstate, PyObject *call
8270
9074
 
8271
9075
  return Nuitka_CheckFunctionResult(tstate, called, result);
8272
9076
  }
8273
- PyObject *CALL_FUNCTION_WITH_POSARGS1_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
8274
- PyObject *const *kw_values, PyObject *kw_names) {
9077
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS1_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9078
+ PyObject *const *kw_values, PyObject *kw_names) {
8275
9079
  assert(PyTuple_CheckExact(pos_args));
8276
9080
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
8277
9081
  CHECK_OBJECTS(args, 1);
@@ -8415,7 +9219,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2_VECTORCALL(PyThreadState *tstate, PyObject *c
8415
9219
  return NULL;
8416
9220
  }
8417
9221
 
8418
- PyObject *pos_args = MAKE_TUPLE(args, 2);
9222
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
8419
9223
 
8420
9224
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8421
9225
 
@@ -8441,8 +9245,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS2_VECTORCALL(PyThreadState *tstate, PyObject *c
8441
9245
 
8442
9246
  return Nuitka_CheckFunctionResult(tstate, called, result);
8443
9247
  }
8444
- PyObject *CALL_FUNCTION_WITH_ARGS2_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
8445
- PyObject *const *kw_values, PyObject *kw_names) {
9248
+ PyObject *CALL_FUNCTION_WITH_ARGS2_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9249
+ PyObject *const *kw_values, PyObject *kw_names) {
8446
9250
  CHECK_OBJECTS(args, 2);
8447
9251
  CHECK_OBJECT(kw_names);
8448
9252
  assert(PyTuple_CheckExact(kw_names));
@@ -8503,7 +9307,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS2_KWSPLIT(PyThreadState *tstate, PyObject *call
8503
9307
  return NULL;
8504
9308
  }
8505
9309
 
8506
- PyObject *pos_args = MAKE_TUPLE(args, 2);
9310
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
8507
9311
 
8508
9312
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8509
9313
 
@@ -8529,8 +9333,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS2_KWSPLIT(PyThreadState *tstate, PyObject *call
8529
9333
 
8530
9334
  return Nuitka_CheckFunctionResult(tstate, called, result);
8531
9335
  }
8532
- PyObject *CALL_FUNCTION_WITH_POSARGS2_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
8533
- PyObject *const *kw_values, PyObject *kw_names) {
9336
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS2_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9337
+ PyObject *const *kw_values, PyObject *kw_names) {
8534
9338
  assert(PyTuple_CheckExact(pos_args));
8535
9339
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
8536
9340
  CHECK_OBJECTS(args, 2);
@@ -8674,7 +9478,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3_VECTORCALL(PyThreadState *tstate, PyObject *c
8674
9478
  return NULL;
8675
9479
  }
8676
9480
 
8677
- PyObject *pos_args = MAKE_TUPLE(args, 3);
9481
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
8678
9482
 
8679
9483
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8680
9484
 
@@ -8700,8 +9504,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS3_VECTORCALL(PyThreadState *tstate, PyObject *c
8700
9504
 
8701
9505
  return Nuitka_CheckFunctionResult(tstate, called, result);
8702
9506
  }
8703
- PyObject *CALL_FUNCTION_WITH_ARGS3_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
8704
- PyObject *const *kw_values, PyObject *kw_names) {
9507
+ PyObject *CALL_FUNCTION_WITH_ARGS3_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9508
+ PyObject *const *kw_values, PyObject *kw_names) {
8705
9509
  CHECK_OBJECTS(args, 3);
8706
9510
  CHECK_OBJECT(kw_names);
8707
9511
  assert(PyTuple_CheckExact(kw_names));
@@ -8762,7 +9566,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS3_KWSPLIT(PyThreadState *tstate, PyObject *call
8762
9566
  return NULL;
8763
9567
  }
8764
9568
 
8765
- PyObject *pos_args = MAKE_TUPLE(args, 3);
9569
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
8766
9570
 
8767
9571
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8768
9572
 
@@ -8788,8 +9592,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS3_KWSPLIT(PyThreadState *tstate, PyObject *call
8788
9592
 
8789
9593
  return Nuitka_CheckFunctionResult(tstate, called, result);
8790
9594
  }
8791
- PyObject *CALL_FUNCTION_WITH_POSARGS3_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
8792
- PyObject *const *kw_values, PyObject *kw_names) {
9595
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS3_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9596
+ PyObject *const *kw_values, PyObject *kw_names) {
8793
9597
  assert(PyTuple_CheckExact(pos_args));
8794
9598
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
8795
9599
  CHECK_OBJECTS(args, 3);
@@ -8933,7 +9737,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4_VECTORCALL(PyThreadState *tstate, PyObject *c
8933
9737
  return NULL;
8934
9738
  }
8935
9739
 
8936
- PyObject *pos_args = MAKE_TUPLE(args, 4);
9740
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
8937
9741
 
8938
9742
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
8939
9743
 
@@ -8959,8 +9763,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS4_VECTORCALL(PyThreadState *tstate, PyObject *c
8959
9763
 
8960
9764
  return Nuitka_CheckFunctionResult(tstate, called, result);
8961
9765
  }
8962
- PyObject *CALL_FUNCTION_WITH_ARGS4_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
8963
- PyObject *const *kw_values, PyObject *kw_names) {
9766
+ PyObject *CALL_FUNCTION_WITH_ARGS4_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9767
+ PyObject *const *kw_values, PyObject *kw_names) {
8964
9768
  CHECK_OBJECTS(args, 4);
8965
9769
  CHECK_OBJECT(kw_names);
8966
9770
  assert(PyTuple_CheckExact(kw_names));
@@ -9021,7 +9825,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS4_KWSPLIT(PyThreadState *tstate, PyObject *call
9021
9825
  return NULL;
9022
9826
  }
9023
9827
 
9024
- PyObject *pos_args = MAKE_TUPLE(args, 4);
9828
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
9025
9829
 
9026
9830
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9027
9831
 
@@ -9047,8 +9851,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS4_KWSPLIT(PyThreadState *tstate, PyObject *call
9047
9851
 
9048
9852
  return Nuitka_CheckFunctionResult(tstate, called, result);
9049
9853
  }
9050
- PyObject *CALL_FUNCTION_WITH_POSARGS4_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9051
- PyObject *const *kw_values, PyObject *kw_names) {
9854
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS4_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9855
+ PyObject *const *kw_values, PyObject *kw_names) {
9052
9856
  assert(PyTuple_CheckExact(pos_args));
9053
9857
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
9054
9858
  CHECK_OBJECTS(args, 4);
@@ -9192,7 +9996,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5_VECTORCALL(PyThreadState *tstate, PyObject *c
9192
9996
  return NULL;
9193
9997
  }
9194
9998
 
9195
- PyObject *pos_args = MAKE_TUPLE(args, 5);
9999
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
9196
10000
 
9197
10001
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9198
10002
 
@@ -9218,8 +10022,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS5_VECTORCALL(PyThreadState *tstate, PyObject *c
9218
10022
 
9219
10023
  return Nuitka_CheckFunctionResult(tstate, called, result);
9220
10024
  }
9221
- PyObject *CALL_FUNCTION_WITH_ARGS5_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9222
- PyObject *const *kw_values, PyObject *kw_names) {
10025
+ PyObject *CALL_FUNCTION_WITH_ARGS5_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10026
+ PyObject *const *kw_values, PyObject *kw_names) {
9223
10027
  CHECK_OBJECTS(args, 5);
9224
10028
  CHECK_OBJECT(kw_names);
9225
10029
  assert(PyTuple_CheckExact(kw_names));
@@ -9280,7 +10084,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS5_KWSPLIT(PyThreadState *tstate, PyObject *call
9280
10084
  return NULL;
9281
10085
  }
9282
10086
 
9283
- PyObject *pos_args = MAKE_TUPLE(args, 5);
10087
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 5);
9284
10088
 
9285
10089
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9286
10090
 
@@ -9306,8 +10110,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS5_KWSPLIT(PyThreadState *tstate, PyObject *call
9306
10110
 
9307
10111
  return Nuitka_CheckFunctionResult(tstate, called, result);
9308
10112
  }
9309
- PyObject *CALL_FUNCTION_WITH_POSARGS5_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9310
- PyObject *const *kw_values, PyObject *kw_names) {
10113
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS5_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10114
+ PyObject *const *kw_values, PyObject *kw_names) {
9311
10115
  assert(PyTuple_CheckExact(pos_args));
9312
10116
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
9313
10117
  CHECK_OBJECTS(args, 5);
@@ -9451,7 +10255,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6_VECTORCALL(PyThreadState *tstate, PyObject *c
9451
10255
  return NULL;
9452
10256
  }
9453
10257
 
9454
- PyObject *pos_args = MAKE_TUPLE(args, 6);
10258
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
9455
10259
 
9456
10260
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9457
10261
 
@@ -9477,8 +10281,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS6_VECTORCALL(PyThreadState *tstate, PyObject *c
9477
10281
 
9478
10282
  return Nuitka_CheckFunctionResult(tstate, called, result);
9479
10283
  }
9480
- PyObject *CALL_FUNCTION_WITH_ARGS6_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9481
- PyObject *const *kw_values, PyObject *kw_names) {
10284
+ PyObject *CALL_FUNCTION_WITH_ARGS6_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10285
+ PyObject *const *kw_values, PyObject *kw_names) {
9482
10286
  CHECK_OBJECTS(args, 6);
9483
10287
  CHECK_OBJECT(kw_names);
9484
10288
  assert(PyTuple_CheckExact(kw_names));
@@ -9539,7 +10343,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS6_KWSPLIT(PyThreadState *tstate, PyObject *call
9539
10343
  return NULL;
9540
10344
  }
9541
10345
 
9542
- PyObject *pos_args = MAKE_TUPLE(args, 6);
10346
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 6);
9543
10347
 
9544
10348
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9545
10349
 
@@ -9565,8 +10369,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS6_KWSPLIT(PyThreadState *tstate, PyObject *call
9565
10369
 
9566
10370
  return Nuitka_CheckFunctionResult(tstate, called, result);
9567
10371
  }
9568
- PyObject *CALL_FUNCTION_WITH_POSARGS6_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9569
- PyObject *const *kw_values, PyObject *kw_names) {
10372
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS6_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10373
+ PyObject *const *kw_values, PyObject *kw_names) {
9570
10374
  assert(PyTuple_CheckExact(pos_args));
9571
10375
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
9572
10376
  CHECK_OBJECTS(args, 6);
@@ -9710,7 +10514,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7_VECTORCALL(PyThreadState *tstate, PyObject *c
9710
10514
  return NULL;
9711
10515
  }
9712
10516
 
9713
- PyObject *pos_args = MAKE_TUPLE(args, 7);
10517
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
9714
10518
 
9715
10519
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9716
10520
 
@@ -9736,8 +10540,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS7_VECTORCALL(PyThreadState *tstate, PyObject *c
9736
10540
 
9737
10541
  return Nuitka_CheckFunctionResult(tstate, called, result);
9738
10542
  }
9739
- PyObject *CALL_FUNCTION_WITH_ARGS7_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9740
- PyObject *const *kw_values, PyObject *kw_names) {
10543
+ PyObject *CALL_FUNCTION_WITH_ARGS7_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10544
+ PyObject *const *kw_values, PyObject *kw_names) {
9741
10545
  CHECK_OBJECTS(args, 7);
9742
10546
  CHECK_OBJECT(kw_names);
9743
10547
  assert(PyTuple_CheckExact(kw_names));
@@ -9798,7 +10602,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS7_KWSPLIT(PyThreadState *tstate, PyObject *call
9798
10602
  return NULL;
9799
10603
  }
9800
10604
 
9801
- PyObject *pos_args = MAKE_TUPLE(args, 7);
10605
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 7);
9802
10606
 
9803
10607
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9804
10608
 
@@ -9824,8 +10628,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS7_KWSPLIT(PyThreadState *tstate, PyObject *call
9824
10628
 
9825
10629
  return Nuitka_CheckFunctionResult(tstate, called, result);
9826
10630
  }
9827
- PyObject *CALL_FUNCTION_WITH_POSARGS7_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
9828
- PyObject *const *kw_values, PyObject *kw_names) {
10631
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS7_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10632
+ PyObject *const *kw_values, PyObject *kw_names) {
9829
10633
  assert(PyTuple_CheckExact(pos_args));
9830
10634
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
9831
10635
  CHECK_OBJECTS(args, 7);
@@ -9969,7 +10773,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8_VECTORCALL(PyThreadState *tstate, PyObject *c
9969
10773
  return NULL;
9970
10774
  }
9971
10775
 
9972
- PyObject *pos_args = MAKE_TUPLE(args, 8);
10776
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
9973
10777
 
9974
10778
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
9975
10779
 
@@ -9995,8 +10799,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS8_VECTORCALL(PyThreadState *tstate, PyObject *c
9995
10799
 
9996
10800
  return Nuitka_CheckFunctionResult(tstate, called, result);
9997
10801
  }
9998
- PyObject *CALL_FUNCTION_WITH_ARGS8_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
9999
- PyObject *const *kw_values, PyObject *kw_names) {
10802
+ PyObject *CALL_FUNCTION_WITH_ARGS8_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10803
+ PyObject *const *kw_values, PyObject *kw_names) {
10000
10804
  CHECK_OBJECTS(args, 8);
10001
10805
  CHECK_OBJECT(kw_names);
10002
10806
  assert(PyTuple_CheckExact(kw_names));
@@ -10057,7 +10861,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS8_KWSPLIT(PyThreadState *tstate, PyObject *call
10057
10861
  return NULL;
10058
10862
  }
10059
10863
 
10060
- PyObject *pos_args = MAKE_TUPLE(args, 8);
10864
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 8);
10061
10865
 
10062
10866
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
10063
10867
 
@@ -10083,8 +10887,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS8_KWSPLIT(PyThreadState *tstate, PyObject *call
10083
10887
 
10084
10888
  return Nuitka_CheckFunctionResult(tstate, called, result);
10085
10889
  }
10086
- PyObject *CALL_FUNCTION_WITH_POSARGS8_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10087
- PyObject *const *kw_values, PyObject *kw_names) {
10890
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS8_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10891
+ PyObject *const *kw_values, PyObject *kw_names) {
10088
10892
  assert(PyTuple_CheckExact(pos_args));
10089
10893
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
10090
10894
  CHECK_OBJECTS(args, 8);
@@ -10228,7 +11032,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9_VECTORCALL(PyThreadState *tstate, PyObject *c
10228
11032
  return NULL;
10229
11033
  }
10230
11034
 
10231
- PyObject *pos_args = MAKE_TUPLE(args, 9);
11035
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
10232
11036
 
10233
11037
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
10234
11038
 
@@ -10254,8 +11058,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS9_VECTORCALL(PyThreadState *tstate, PyObject *c
10254
11058
 
10255
11059
  return Nuitka_CheckFunctionResult(tstate, called, result);
10256
11060
  }
10257
- PyObject *CALL_FUNCTION_WITH_ARGS9_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10258
- PyObject *const *kw_values, PyObject *kw_names) {
11061
+ PyObject *CALL_FUNCTION_WITH_ARGS9_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
11062
+ PyObject *const *kw_values, PyObject *kw_names) {
10259
11063
  CHECK_OBJECTS(args, 9);
10260
11064
  CHECK_OBJECT(kw_names);
10261
11065
  assert(PyTuple_CheckExact(kw_names));
@@ -10316,7 +11120,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS9_KWSPLIT(PyThreadState *tstate, PyObject *call
10316
11120
  return NULL;
10317
11121
  }
10318
11122
 
10319
- PyObject *pos_args = MAKE_TUPLE(args, 9);
11123
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 9);
10320
11124
 
10321
11125
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
10322
11126
 
@@ -10342,8 +11146,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS9_KWSPLIT(PyThreadState *tstate, PyObject *call
10342
11146
 
10343
11147
  return Nuitka_CheckFunctionResult(tstate, called, result);
10344
11148
  }
10345
- PyObject *CALL_FUNCTION_WITH_POSARGS9_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10346
- PyObject *const *kw_values, PyObject *kw_names) {
11149
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS9_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
11150
+ PyObject *const *kw_values, PyObject *kw_names) {
10347
11151
  assert(PyTuple_CheckExact(pos_args));
10348
11152
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
10349
11153
  CHECK_OBJECTS(args, 9);
@@ -10487,7 +11291,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10_VECTORCALL(PyThreadState *tstate, PyObject *
10487
11291
  return NULL;
10488
11292
  }
10489
11293
 
10490
- PyObject *pos_args = MAKE_TUPLE(args, 10);
11294
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
10491
11295
 
10492
11296
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
10493
11297
 
@@ -10513,8 +11317,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS10_VECTORCALL(PyThreadState *tstate, PyObject *
10513
11317
 
10514
11318
  return Nuitka_CheckFunctionResult(tstate, called, result);
10515
11319
  }
10516
- PyObject *CALL_FUNCTION_WITH_ARGS10_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
10517
- PyObject *const *kw_values, PyObject *kw_names) {
11320
+ PyObject *CALL_FUNCTION_WITH_ARGS10_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *const *args,
11321
+ PyObject *const *kw_values, PyObject *kw_names) {
10518
11322
  CHECK_OBJECTS(args, 10);
10519
11323
  CHECK_OBJECT(kw_names);
10520
11324
  assert(PyTuple_CheckExact(kw_names));
@@ -10575,7 +11379,7 @@ PyObject *CALL_FUNCTION_WITH_ARGS10_KWSPLIT(PyThreadState *tstate, PyObject *cal
10575
11379
  return NULL;
10576
11380
  }
10577
11381
 
10578
- PyObject *pos_args = MAKE_TUPLE(args, 10);
11382
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 10);
10579
11383
 
10580
11384
  PyObject *named_args = _PyDict_NewPresized(nkwargs);
10581
11385
 
@@ -10601,8 +11405,8 @@ PyObject *CALL_FUNCTION_WITH_ARGS10_KWSPLIT(PyThreadState *tstate, PyObject *cal
10601
11405
 
10602
11406
  return Nuitka_CheckFunctionResult(tstate, called, result);
10603
11407
  }
10604
- PyObject *CALL_FUNCTION_WITH_POSARGS10_KWSPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
10605
- PyObject *const *kw_values, PyObject *kw_names) {
11408
+ PyObject *CALL_FUNCTION_WITH_POS_ARGS10_KW_SPLIT(PyThreadState *tstate, PyObject *called, PyObject *pos_args,
11409
+ PyObject *const *kw_values, PyObject *kw_names) {
10606
11410
  assert(PyTuple_CheckExact(pos_args));
10607
11411
  PyObject *const *args = &PyTuple_GET_ITEM(pos_args, 0);
10608
11412
  CHECK_OBJECTS(args, 10);
@@ -10733,7 +11537,7 @@ PyObject *CALL_METHODDESCR_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *call
10733
11537
  PyObject *result;
10734
11538
 
10735
11539
  #if PYTHON_VERSION < 0x360
10736
- PyObject *pos_args = MAKE_TUPLE(args + 1, 0);
11540
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 0);
10737
11541
 
10738
11542
  if (flags & METH_KEYWORDS) {
10739
11543
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
@@ -10744,19 +11548,19 @@ PyObject *CALL_METHODDESCR_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *call
10744
11548
  Py_DECREF(pos_args);
10745
11549
  #else
10746
11550
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
10747
- PyObject *pos_args = MAKE_TUPLE(args + 1, 0);
11551
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 0);
10748
11552
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
10749
11553
  Py_DECREF(pos_args);
10750
11554
  } else if (flags == METH_FASTCALL) {
10751
11555
  #if PYTHON_VERSION < 0x370
10752
11556
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args + 1, 0, NULL);
10753
11557
  #else
10754
- PyObject *pos_args = MAKE_TUPLE(args + 1, 0);
11558
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 0);
10755
11559
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 1);
10756
11560
  Py_DECREF(pos_args);
10757
11561
  #endif
10758
11562
  } else {
10759
- PyObject *pos_args = MAKE_TUPLE(args + 1, 0);
11563
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 0);
10760
11564
  result = (*method)(self, pos_args);
10761
11565
  Py_DECREF(pos_args);
10762
11566
  }
@@ -10775,7 +11579,7 @@ PyObject *CALL_METHODDESCR_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *call
10775
11579
  PRINT_NEW_LINE();
10776
11580
  #endif
10777
11581
 
10778
- PyObject *pos_args = MAKE_TUPLE(args, 1);
11582
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 1);
10779
11583
 
10780
11584
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
10781
11585
 
@@ -10835,7 +11639,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS2(PyThreadState *tstate, PyObject *called, P
10835
11639
  PyObject *result;
10836
11640
 
10837
11641
  #if PYTHON_VERSION < 0x360
10838
- PyObject *pos_args = MAKE_TUPLE(args + 1, 1);
11642
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 1);
10839
11643
 
10840
11644
  if (flags & METH_KEYWORDS) {
10841
11645
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
@@ -10846,19 +11650,19 @@ PyObject *CALL_METHODDESCR_WITH_ARGS2(PyThreadState *tstate, PyObject *called, P
10846
11650
  Py_DECREF(pos_args);
10847
11651
  #else
10848
11652
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
10849
- PyObject *pos_args = MAKE_TUPLE(args + 1, 1);
11653
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 1);
10850
11654
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
10851
11655
  Py_DECREF(pos_args);
10852
11656
  } else if (flags == METH_FASTCALL) {
10853
11657
  #if PYTHON_VERSION < 0x370
10854
11658
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args + 1, 1, NULL);
10855
11659
  #else
10856
- PyObject *pos_args = MAKE_TUPLE(args + 1, 1);
11660
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 1);
10857
11661
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 2);
10858
11662
  Py_DECREF(pos_args);
10859
11663
  #endif
10860
11664
  } else {
10861
- PyObject *pos_args = MAKE_TUPLE(args + 1, 1);
11665
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 1);
10862
11666
  result = (*method)(self, pos_args);
10863
11667
  Py_DECREF(pos_args);
10864
11668
  }
@@ -10877,7 +11681,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS2(PyThreadState *tstate, PyObject *called, P
10877
11681
  PRINT_NEW_LINE();
10878
11682
  #endif
10879
11683
 
10880
- PyObject *pos_args = MAKE_TUPLE(args, 2);
11684
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 2);
10881
11685
 
10882
11686
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
10883
11687
 
@@ -10930,7 +11734,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS3(PyThreadState *tstate, PyObject *called, P
10930
11734
  PyObject *result;
10931
11735
 
10932
11736
  #if PYTHON_VERSION < 0x360
10933
- PyObject *pos_args = MAKE_TUPLE(args + 1, 2);
11737
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 2);
10934
11738
 
10935
11739
  if (flags & METH_KEYWORDS) {
10936
11740
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
@@ -10941,19 +11745,19 @@ PyObject *CALL_METHODDESCR_WITH_ARGS3(PyThreadState *tstate, PyObject *called, P
10941
11745
  Py_DECREF(pos_args);
10942
11746
  #else
10943
11747
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
10944
- PyObject *pos_args = MAKE_TUPLE(args + 1, 2);
11748
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 2);
10945
11749
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
10946
11750
  Py_DECREF(pos_args);
10947
11751
  } else if (flags == METH_FASTCALL) {
10948
11752
  #if PYTHON_VERSION < 0x370
10949
11753
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args + 1, 2, NULL);
10950
11754
  #else
10951
- PyObject *pos_args = MAKE_TUPLE(args + 1, 2);
11755
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 2);
10952
11756
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 3);
10953
11757
  Py_DECREF(pos_args);
10954
11758
  #endif
10955
11759
  } else {
10956
- PyObject *pos_args = MAKE_TUPLE(args + 1, 2);
11760
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 2);
10957
11761
  result = (*method)(self, pos_args);
10958
11762
  Py_DECREF(pos_args);
10959
11763
  }
@@ -10972,7 +11776,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS3(PyThreadState *tstate, PyObject *called, P
10972
11776
  PRINT_NEW_LINE();
10973
11777
  #endif
10974
11778
 
10975
- PyObject *pos_args = MAKE_TUPLE(args, 3);
11779
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 3);
10976
11780
 
10977
11781
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
10978
11782
 
@@ -11025,7 +11829,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS4(PyThreadState *tstate, PyObject *called, P
11025
11829
  PyObject *result;
11026
11830
 
11027
11831
  #if PYTHON_VERSION < 0x360
11028
- PyObject *pos_args = MAKE_TUPLE(args + 1, 3);
11832
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 3);
11029
11833
 
11030
11834
  if (flags & METH_KEYWORDS) {
11031
11835
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
@@ -11036,19 +11840,19 @@ PyObject *CALL_METHODDESCR_WITH_ARGS4(PyThreadState *tstate, PyObject *called, P
11036
11840
  Py_DECREF(pos_args);
11037
11841
  #else
11038
11842
  if (flags == (METH_VARARGS | METH_KEYWORDS)) {
11039
- PyObject *pos_args = MAKE_TUPLE(args + 1, 3);
11843
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 3);
11040
11844
  result = (*(PyCFunctionWithKeywords)method)(self, pos_args, NULL);
11041
11845
  Py_DECREF(pos_args);
11042
11846
  } else if (flags == METH_FASTCALL) {
11043
11847
  #if PYTHON_VERSION < 0x370
11044
11848
  result = (*(_PyCFunctionFast)method)(self, (PyObject **)args + 1, 3, NULL);
11045
11849
  #else
11046
- PyObject *pos_args = MAKE_TUPLE(args + 1, 3);
11850
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 3);
11047
11851
  result = (*(_PyCFunctionFast)method)(self, &pos_args, 4);
11048
11852
  Py_DECREF(pos_args);
11049
11853
  #endif
11050
11854
  } else {
11051
- PyObject *pos_args = MAKE_TUPLE(args + 1, 3);
11855
+ PyObject *pos_args = MAKE_TUPLE(tstate, args + 1, 3);
11052
11856
  result = (*method)(self, pos_args);
11053
11857
  Py_DECREF(pos_args);
11054
11858
  }
@@ -11067,7 +11871,7 @@ PyObject *CALL_METHODDESCR_WITH_ARGS4(PyThreadState *tstate, PyObject *called, P
11067
11871
  PRINT_NEW_LINE();
11068
11872
  #endif
11069
11873
 
11070
- PyObject *pos_args = MAKE_TUPLE(args, 4);
11874
+ PyObject *pos_args = MAKE_TUPLE(tstate, args, 4);
11071
11875
 
11072
11876
  PyObject *result = CALL_FUNCTION(tstate, called, pos_args, NULL);
11073
11877
 
@@ -11099,7 +11903,7 @@ PyObject *CALL_METHOD_NO_ARGS(PyThreadState *tstate, PyObject *source, PyObject
11099
11903
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11100
11904
  func = Py_TYPE(descr)->tp_descr_get;
11101
11905
 
11102
- if (func != NULL && PyDescr_IsData(descr)) {
11906
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11103
11907
  PyObject *called_object = func(descr, source, (PyObject *)type);
11104
11908
  Py_DECREF(descr);
11105
11909
 
@@ -11265,7 +12069,7 @@ PyObject *CALL_METHOD_NO_ARGS(PyThreadState *tstate, PyObject *source, PyObject
11265
12069
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11266
12070
  func = Py_TYPE(descr)->tp_descr_get;
11267
12071
 
11268
- if (func != NULL && PyDescr_IsData(descr)) {
12072
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11269
12073
  PyObject *called_object = func(descr, source, (PyObject *)type);
11270
12074
  Py_DECREF(descr);
11271
12075
 
@@ -11325,7 +12129,7 @@ PyObject *CALL_METHOD_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *source, P
11325
12129
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11326
12130
  func = Py_TYPE(descr)->tp_descr_get;
11327
12131
 
11328
- if (func != NULL && PyDescr_IsData(descr)) {
12132
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11329
12133
  PyObject *called_object = func(descr, source, (PyObject *)type);
11330
12134
  Py_DECREF(descr);
11331
12135
 
@@ -11491,7 +12295,7 @@ PyObject *CALL_METHOD_WITH_SINGLE_ARG(PyThreadState *tstate, PyObject *source, P
11491
12295
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11492
12296
  func = Py_TYPE(descr)->tp_descr_get;
11493
12297
 
11494
- if (func != NULL && PyDescr_IsData(descr)) {
12298
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11495
12299
  PyObject *called_object = func(descr, source, (PyObject *)type);
11496
12300
  Py_DECREF(descr);
11497
12301
 
@@ -11550,7 +12354,7 @@ PyObject *CALL_METHOD_WITH_ARGS2(PyThreadState *tstate, PyObject *source, PyObje
11550
12354
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11551
12355
  func = Py_TYPE(descr)->tp_descr_get;
11552
12356
 
11553
- if (func != NULL && PyDescr_IsData(descr)) {
12357
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11554
12358
  PyObject *called_object = func(descr, source, (PyObject *)type);
11555
12359
  Py_DECREF(descr);
11556
12360
 
@@ -11716,7 +12520,7 @@ PyObject *CALL_METHOD_WITH_ARGS2(PyThreadState *tstate, PyObject *source, PyObje
11716
12520
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11717
12521
  func = Py_TYPE(descr)->tp_descr_get;
11718
12522
 
11719
- if (func != NULL && PyDescr_IsData(descr)) {
12523
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11720
12524
  PyObject *called_object = func(descr, source, (PyObject *)type);
11721
12525
  Py_DECREF(descr);
11722
12526
 
@@ -11775,7 +12579,7 @@ PyObject *CALL_METHOD_WITH_ARGS3(PyThreadState *tstate, PyObject *source, PyObje
11775
12579
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11776
12580
  func = Py_TYPE(descr)->tp_descr_get;
11777
12581
 
11778
- if (func != NULL && PyDescr_IsData(descr)) {
12582
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11779
12583
  PyObject *called_object = func(descr, source, (PyObject *)type);
11780
12584
  Py_DECREF(descr);
11781
12585
 
@@ -11941,7 +12745,7 @@ PyObject *CALL_METHOD_WITH_ARGS3(PyThreadState *tstate, PyObject *source, PyObje
11941
12745
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
11942
12746
  func = Py_TYPE(descr)->tp_descr_get;
11943
12747
 
11944
- if (func != NULL && PyDescr_IsData(descr)) {
12748
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
11945
12749
  PyObject *called_object = func(descr, source, (PyObject *)type);
11946
12750
  Py_DECREF(descr);
11947
12751
 
@@ -12000,7 +12804,7 @@ PyObject *CALL_METHOD_WITH_ARGS4(PyThreadState *tstate, PyObject *source, PyObje
12000
12804
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12001
12805
  func = Py_TYPE(descr)->tp_descr_get;
12002
12806
 
12003
- if (func != NULL && PyDescr_IsData(descr)) {
12807
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12004
12808
  PyObject *called_object = func(descr, source, (PyObject *)type);
12005
12809
  Py_DECREF(descr);
12006
12810
 
@@ -12166,7 +12970,7 @@ PyObject *CALL_METHOD_WITH_ARGS4(PyThreadState *tstate, PyObject *source, PyObje
12166
12970
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12167
12971
  func = Py_TYPE(descr)->tp_descr_get;
12168
12972
 
12169
- if (func != NULL && PyDescr_IsData(descr)) {
12973
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12170
12974
  PyObject *called_object = func(descr, source, (PyObject *)type);
12171
12975
  Py_DECREF(descr);
12172
12976
 
@@ -12225,7 +13029,7 @@ PyObject *CALL_METHOD_WITH_ARGS5(PyThreadState *tstate, PyObject *source, PyObje
12225
13029
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12226
13030
  func = Py_TYPE(descr)->tp_descr_get;
12227
13031
 
12228
- if (func != NULL && PyDescr_IsData(descr)) {
13032
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12229
13033
  PyObject *called_object = func(descr, source, (PyObject *)type);
12230
13034
  Py_DECREF(descr);
12231
13035
 
@@ -12391,7 +13195,7 @@ PyObject *CALL_METHOD_WITH_ARGS5(PyThreadState *tstate, PyObject *source, PyObje
12391
13195
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12392
13196
  func = Py_TYPE(descr)->tp_descr_get;
12393
13197
 
12394
- if (func != NULL && PyDescr_IsData(descr)) {
13198
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12395
13199
  PyObject *called_object = func(descr, source, (PyObject *)type);
12396
13200
  Py_DECREF(descr);
12397
13201
 
@@ -12450,7 +13254,7 @@ PyObject *CALL_METHOD_WITH_ARGS6(PyThreadState *tstate, PyObject *source, PyObje
12450
13254
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12451
13255
  func = Py_TYPE(descr)->tp_descr_get;
12452
13256
 
12453
- if (func != NULL && PyDescr_IsData(descr)) {
13257
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12454
13258
  PyObject *called_object = func(descr, source, (PyObject *)type);
12455
13259
  Py_DECREF(descr);
12456
13260
 
@@ -12616,7 +13420,7 @@ PyObject *CALL_METHOD_WITH_ARGS6(PyThreadState *tstate, PyObject *source, PyObje
12616
13420
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12617
13421
  func = Py_TYPE(descr)->tp_descr_get;
12618
13422
 
12619
- if (func != NULL && PyDescr_IsData(descr)) {
13423
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12620
13424
  PyObject *called_object = func(descr, source, (PyObject *)type);
12621
13425
  Py_DECREF(descr);
12622
13426
 
@@ -12675,7 +13479,7 @@ PyObject *CALL_METHOD_WITH_ARGS7(PyThreadState *tstate, PyObject *source, PyObje
12675
13479
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12676
13480
  func = Py_TYPE(descr)->tp_descr_get;
12677
13481
 
12678
- if (func != NULL && PyDescr_IsData(descr)) {
13482
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12679
13483
  PyObject *called_object = func(descr, source, (PyObject *)type);
12680
13484
  Py_DECREF(descr);
12681
13485
 
@@ -12841,7 +13645,7 @@ PyObject *CALL_METHOD_WITH_ARGS7(PyThreadState *tstate, PyObject *source, PyObje
12841
13645
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12842
13646
  func = Py_TYPE(descr)->tp_descr_get;
12843
13647
 
12844
- if (func != NULL && PyDescr_IsData(descr)) {
13648
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12845
13649
  PyObject *called_object = func(descr, source, (PyObject *)type);
12846
13650
  Py_DECREF(descr);
12847
13651
 
@@ -12900,7 +13704,7 @@ PyObject *CALL_METHOD_WITH_ARGS8(PyThreadState *tstate, PyObject *source, PyObje
12900
13704
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
12901
13705
  func = Py_TYPE(descr)->tp_descr_get;
12902
13706
 
12903
- if (func != NULL && PyDescr_IsData(descr)) {
13707
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
12904
13708
  PyObject *called_object = func(descr, source, (PyObject *)type);
12905
13709
  Py_DECREF(descr);
12906
13710
 
@@ -13066,7 +13870,7 @@ PyObject *CALL_METHOD_WITH_ARGS8(PyThreadState *tstate, PyObject *source, PyObje
13066
13870
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
13067
13871
  func = Py_TYPE(descr)->tp_descr_get;
13068
13872
 
13069
- if (func != NULL && PyDescr_IsData(descr)) {
13873
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
13070
13874
  PyObject *called_object = func(descr, source, (PyObject *)type);
13071
13875
  Py_DECREF(descr);
13072
13876
 
@@ -13125,7 +13929,7 @@ PyObject *CALL_METHOD_WITH_ARGS9(PyThreadState *tstate, PyObject *source, PyObje
13125
13929
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
13126
13930
  func = Py_TYPE(descr)->tp_descr_get;
13127
13931
 
13128
- if (func != NULL && PyDescr_IsData(descr)) {
13932
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
13129
13933
  PyObject *called_object = func(descr, source, (PyObject *)type);
13130
13934
  Py_DECREF(descr);
13131
13935
 
@@ -13291,7 +14095,7 @@ PyObject *CALL_METHOD_WITH_ARGS9(PyThreadState *tstate, PyObject *source, PyObje
13291
14095
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
13292
14096
  func = Py_TYPE(descr)->tp_descr_get;
13293
14097
 
13294
- if (func != NULL && PyDescr_IsData(descr)) {
14098
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
13295
14099
  PyObject *called_object = func(descr, source, (PyObject *)type);
13296
14100
  Py_DECREF(descr);
13297
14101
 
@@ -13350,7 +14154,7 @@ PyObject *CALL_METHOD_WITH_ARGS10(PyThreadState *tstate, PyObject *source, PyObj
13350
14154
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
13351
14155
  func = Py_TYPE(descr)->tp_descr_get;
13352
14156
 
13353
- if (func != NULL && PyDescr_IsData(descr)) {
14157
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
13354
14158
  PyObject *called_object = func(descr, source, (PyObject *)type);
13355
14159
  Py_DECREF(descr);
13356
14160
 
@@ -13516,7 +14320,7 @@ PyObject *CALL_METHOD_WITH_ARGS10(PyThreadState *tstate, PyObject *source, PyObj
13516
14320
  if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
13517
14321
  func = Py_TYPE(descr)->tp_descr_get;
13518
14322
 
13519
- if (func != NULL && PyDescr_IsData(descr)) {
14323
+ if (func != NULL && Nuitka_Descr_IsData(descr)) {
13520
14324
  PyObject *called_object = func(descr, source, (PyObject *)type);
13521
14325
  Py_DECREF(descr);
13522
14326
 
@@ -13550,3 +14354,18 @@ PyObject *CALL_METHOD_WITH_ARGS10(PyThreadState *tstate, PyObject *source, PyObj
13550
14354
  return NULL;
13551
14355
  }
13552
14356
  }
14357
+
14358
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
14359
+ // integrates with CPython, but also works on its own.
14360
+ //
14361
+ // Licensed under the Apache License, Version 2.0 (the "License");
14362
+ // you may not use this file except in compliance with the License.
14363
+ // You may obtain a copy of the License at
14364
+ //
14365
+ // http://www.apache.org/licenses/LICENSE-2.0
14366
+ //
14367
+ // Unless required by applicable law or agreed to in writing, software
14368
+ // distributed under the License is distributed on an "AS IS" BASIS,
14369
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14370
+ // See the License for the specific language governing permissions and
14371
+ // limitations under the License.