Nuitka-winsvc 2.2.3__cp311-cp311-win_amd64.whl → 2.3.2__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 (201) hide show
  1. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/METADATA +2 -1
  2. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/RECORD +201 -200
  3. nuitka/Bytecodes.py +4 -2
  4. nuitka/HardImportRegistry.py +1 -0
  5. nuitka/MainControl.py +16 -10
  6. nuitka/ModuleRegistry.py +15 -0
  7. nuitka/OptionParsing.py +30 -8
  8. nuitka/Options.py +106 -45
  9. nuitka/PostProcessing.py +9 -8
  10. nuitka/PythonVersions.py +2 -1
  11. nuitka/Serialization.py +47 -30
  12. nuitka/Version.py +1 -1
  13. nuitka/build/Backend.scons +46 -19
  14. nuitka/build/CCompilerVersion.scons +3 -3
  15. nuitka/build/Onefile.scons +4 -4
  16. nuitka/build/SconsCaching.py +3 -2
  17. nuitka/build/SconsCompilerSettings.py +18 -6
  18. nuitka/build/SconsInterface.py +28 -8
  19. nuitka/build/SconsUtils.py +9 -1
  20. nuitka/build/include/nuitka/allocator.h +58 -2
  21. nuitka/build/include/nuitka/compiled_frame.h +48 -13
  22. nuitka/build/include/nuitka/compiled_function.h +4 -0
  23. nuitka/build/include/nuitka/constants.h +6 -0
  24. nuitka/build/include/nuitka/exception_groups.h +6 -6
  25. nuitka/build/include/nuitka/exceptions.h +3 -3
  26. nuitka/build/include/nuitka/freelists.h +11 -0
  27. nuitka/build/include/nuitka/helper/dictionaries.h +5 -4
  28. nuitka/build/include/nuitka/helper/lists.h +5 -5
  29. nuitka/build/include/nuitka/helper/lists_generated.h +12 -12
  30. nuitka/build/include/nuitka/helper/sequences.h +6 -0
  31. nuitka/build/include/nuitka/helper/slices.h +14 -8
  32. nuitka/build/include/nuitka/helper/subscripts.h +1 -184
  33. nuitka/build/include/nuitka/helper/tuples.h +42 -33
  34. nuitka/build/include/nuitka/importing.h +5 -0
  35. nuitka/build/include/nuitka/prelude.h +49 -5
  36. nuitka/build/include/nuitka/safe_string_ops.h +1 -0
  37. nuitka/build/include/nuitka/threading.h +13 -10
  38. nuitka/build/static_src/CompiledAsyncgenType.c +19 -8
  39. nuitka/build/static_src/CompiledCellType.c +1 -1
  40. nuitka/build/static_src/CompiledCodeHelpers.c +18 -16
  41. nuitka/build/static_src/CompiledCoroutineType.c +23 -19
  42. nuitka/build/static_src/CompiledFrameType.c +46 -34
  43. nuitka/build/static_src/CompiledFunctionType.c +55 -34
  44. nuitka/build/static_src/CompiledGeneratorType.c +21 -19
  45. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +127 -130
  46. nuitka/build/static_src/CompiledMethodType.c +15 -17
  47. nuitka/build/static_src/HelpersAllocator.c +71 -0
  48. nuitka/build/static_src/HelpersAttributes.c +1 -1
  49. nuitka/build/static_src/HelpersBuiltin.c +5 -5
  50. nuitka/build/static_src/HelpersBytes.c +2 -2
  51. nuitka/build/static_src/HelpersCalling.c +3 -0
  52. nuitka/build/static_src/HelpersCallingGenerated.c +952 -133
  53. nuitka/build/static_src/HelpersComparisonEq.c +329 -329
  54. nuitka/build/static_src/HelpersComparisonEqUtils.c +3 -1
  55. nuitka/build/static_src/HelpersComparisonGe.c +322 -322
  56. nuitka/build/static_src/HelpersComparisonGt.c +321 -321
  57. nuitka/build/static_src/HelpersComparisonLe.c +322 -322
  58. nuitka/build/static_src/HelpersComparisonLt.c +321 -321
  59. nuitka/build/static_src/HelpersComparisonNe.c +329 -329
  60. nuitka/build/static_src/HelpersConsole.c +96 -0
  61. nuitka/build/static_src/HelpersConstantsBlob.c +10 -6
  62. nuitka/build/static_src/HelpersDeepcopy.c +10 -8
  63. nuitka/build/static_src/HelpersDictionaries.c +17 -11
  64. nuitka/build/static_src/HelpersDictionariesGenerated.c +65 -29
  65. nuitka/build/static_src/HelpersExceptions.c +107 -9
  66. nuitka/build/static_src/HelpersFilesystemPaths.c +64 -4
  67. nuitka/build/static_src/HelpersFloats.c +20 -14
  68. nuitka/build/static_src/HelpersImport.c +1 -1
  69. nuitka/build/static_src/HelpersJitSources.c +1 -1
  70. nuitka/build/static_src/HelpersLists.c +29 -19
  71. nuitka/build/static_src/HelpersListsGenerated.c +24 -24
  72. nuitka/build/static_src/HelpersMatching.c +32 -5
  73. nuitka/build/static_src/HelpersOperationBinaryAdd.c +90 -63
  74. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +4 -4
  75. nuitka/build/static_src/HelpersOperationBinaryBitand.c +33 -33
  76. nuitka/build/static_src/HelpersOperationBinaryBitor.c +33 -33
  77. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +33 -33
  78. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +24 -24
  79. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +24 -24
  80. nuitka/build/static_src/HelpersOperationBinaryLshift.c +30 -30
  81. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +7 -7
  82. nuitka/build/static_src/HelpersOperationBinaryMod.c +90 -90
  83. nuitka/build/static_src/HelpersOperationBinaryMult.c +64 -58
  84. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +24 -24
  85. nuitka/build/static_src/HelpersOperationBinaryPow.c +27 -27
  86. nuitka/build/static_src/HelpersOperationBinaryRshift.c +30 -30
  87. nuitka/build/static_src/HelpersOperationBinarySub.c +24 -24
  88. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +24 -24
  89. nuitka/build/static_src/HelpersOperationInplaceAdd.c +67 -49
  90. nuitka/build/static_src/HelpersOperationInplaceBitand.c +25 -25
  91. nuitka/build/static_src/HelpersOperationInplaceBitor.c +25 -25
  92. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +25 -25
  93. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +28 -28
  94. nuitka/build/static_src/HelpersOperationInplaceLshift.c +18 -18
  95. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +10 -10
  96. nuitka/build/static_src/HelpersOperationInplaceMod.c +70 -70
  97. nuitka/build/static_src/HelpersOperationInplaceMult.c +33 -33
  98. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +28 -28
  99. nuitka/build/static_src/HelpersOperationInplacePow.c +28 -28
  100. nuitka/build/static_src/HelpersOperationInplaceRshift.c +18 -18
  101. nuitka/build/static_src/HelpersOperationInplaceSub.c +28 -28
  102. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +28 -28
  103. nuitka/build/static_src/HelpersRaising.c +10 -3
  104. nuitka/build/static_src/HelpersSafeStrings.c +14 -4
  105. nuitka/build/static_src/HelpersSlices.c +12 -5
  106. nuitka/build/static_src/HelpersStrings.c +1 -1
  107. nuitka/build/static_src/HelpersTuples.c +20 -15
  108. nuitka/build/static_src/InspectPatcher.c +74 -6
  109. nuitka/build/static_src/MainProgram.c +90 -25
  110. nuitka/build/static_src/MetaPathBasedLoader.c +81 -45
  111. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +2 -2
  112. nuitka/build/static_src/OnefileBootstrap.c +16 -17
  113. nuitka/code_generation/CodeGeneration.py +5 -2
  114. nuitka/code_generation/ConstantCodes.py +2 -2
  115. nuitka/code_generation/DictCodes.py +2 -2
  116. nuitka/code_generation/GlobalConstants.py +5 -0
  117. nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
  118. nuitka/code_generation/ListCodes.py +2 -2
  119. nuitka/code_generation/LocalsDictCodes.py +1 -1
  120. nuitka/code_generation/ModuleCodes.py +19 -0
  121. nuitka/code_generation/PackageResourceCodes.py +14 -0
  122. nuitka/code_generation/SliceCodes.py +3 -3
  123. nuitka/code_generation/SubscriptCodes.py +5 -13
  124. nuitka/code_generation/TupleCodes.py +1 -1
  125. nuitka/code_generation/c_types/CTypePyObjectPointers.py +7 -7
  126. nuitka/code_generation/templates/CodeTemplatesConstants.py +7 -5
  127. nuitka/code_generation/templates/CodeTemplatesLoader.py +2 -0
  128. nuitka/code_generation/templates/CodeTemplatesModules.py +80 -54
  129. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +1 -1
  130. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +59 -8
  131. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +5 -5
  132. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +2 -2
  133. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +2 -2
  134. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +57 -21
  135. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -1
  136. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +5 -5
  137. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +18 -18
  138. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +11 -11
  139. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +3 -3
  140. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +3 -3
  141. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +7 -7
  142. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +3 -3
  143. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +11 -11
  144. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
  145. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +10 -10
  146. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +1 -1
  147. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +3 -3
  148. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +4 -1
  149. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +4 -1
  150. nuitka/finalizations/FinalizeMarkups.py +0 -18
  151. nuitka/freezer/DependsExe.py +9 -4
  152. nuitka/freezer/DllDependenciesMacOS.py +1 -1
  153. nuitka/freezer/DllDependenciesWin32.py +1 -1
  154. nuitka/freezer/ImportDetection.py +1 -0
  155. nuitka/freezer/IncludedDataFiles.py +13 -4
  156. nuitka/freezer/IncludedEntryPoints.py +16 -0
  157. nuitka/freezer/Onefile.py +0 -1
  158. nuitka/freezer/Standalone.py +38 -21
  159. nuitka/importing/ImportCache.py +3 -2
  160. nuitka/importing/Importing.py +16 -3
  161. nuitka/importing/StandardLibrary.py +4 -0
  162. nuitka/nodes/ChildrenHavingMixins.py +2 -0
  163. nuitka/nodes/ExpressionBasesGenerated.py +4 -0
  164. nuitka/nodes/HardImportNodesGenerated.py +83 -0
  165. nuitka/nodes/ModuleNodes.py +10 -2
  166. nuitka/nodes/OsSysNodes.py +16 -0
  167. nuitka/nodes/SubscriptNodes.py +3 -3
  168. nuitka/plugins/PluginBase.py +2 -0
  169. nuitka/plugins/standard/DataFilesPlugin.py +22 -1
  170. nuitka/plugins/standard/DillPlugin/DillPlugin.c +3 -3
  171. nuitka/plugins/standard/ImplicitImports.py +3 -0
  172. nuitka/plugins/standard/OptionsNannyPlugin.py +9 -41
  173. nuitka/plugins/standard/PkgResourcesPlugin.py +8 -2
  174. nuitka/plugins/standard/PySidePyQtPlugin.py +3 -0
  175. nuitka/plugins/standard/standard.nuitka-package.config.yml +28 -13
  176. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +2 -2
  177. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +7 -2
  178. nuitka/specs/HardImportSpecs.py +3 -0
  179. nuitka/specs/ParameterSpecs.py +26 -15
  180. nuitka/tools/general/find_module/FindModuleCode.py +3 -2
  181. nuitka/tools/specialize/CTypeDescriptions.py +11 -9
  182. nuitka/tools/testing/Common.py +12 -5
  183. nuitka/tools/testing/SearchModes.py +5 -1
  184. nuitka/tools/testing/run_nuitka_tests/__main__.py +37 -0
  185. nuitka/tools/watch/GitHub.py +1 -7
  186. nuitka/tree/Building.py +9 -6
  187. nuitka/tree/ReformulationMatchStatements.py +51 -14
  188. nuitka/tree/TreeHelpers.py +8 -0
  189. nuitka/utils/CStrings.py +7 -0
  190. nuitka/utils/Execution.py +10 -1
  191. nuitka/utils/FileOperations.py +21 -13
  192. nuitka/utils/Importing.py +24 -0
  193. nuitka/utils/ReExecute.py +12 -3
  194. nuitka/utils/SharedLibraries.py +26 -1
  195. nuitka/utils/Yaml.py +9 -1
  196. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka-run.bat +0 -0
  197. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka.bat +0 -0
  198. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/LICENSE.txt +0 -0
  199. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/WHEEL +0 -0
  200. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/entry_points.txt +0 -0
  201. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/top_level.txt +0 -0
@@ -118,7 +118,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_INT(Py
118
118
  goto exit_binary_result_object;
119
119
  }
120
120
 
121
- Py_DECREF(x);
121
+ Py_DECREF_IMMORTAL(x);
122
122
  }
123
123
 
124
124
  if (slot2 != NULL) {
@@ -129,7 +129,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_INT(Py
129
129
  goto exit_binary_result_object;
130
130
  }
131
131
 
132
- Py_DECREF(x);
132
+ Py_DECREF_IMMORTAL(x);
133
133
  }
134
134
 
135
135
  #if PYTHON_VERSION < 0x300
@@ -341,7 +341,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
341
341
  goto exit_binary_result_object;
342
342
  }
343
343
 
344
- Py_DECREF(x);
344
+ Py_DECREF_IMMORTAL(x);
345
345
  slot2 = NULL;
346
346
  }
347
347
  }
@@ -353,7 +353,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
353
353
  goto exit_binary_result_object;
354
354
  }
355
355
 
356
- Py_DECREF(x);
356
+ Py_DECREF_IMMORTAL(x);
357
357
  }
358
358
 
359
359
  if (slot2 != NULL) {
@@ -364,7 +364,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_INT_OBJECT(Py
364
364
  goto exit_binary_result_object;
365
365
  }
366
366
 
367
- Py_DECREF(x);
367
+ Py_DECREF_IMMORTAL(x);
368
368
  }
369
369
 
370
370
  #if PYTHON_VERSION < 0x300
@@ -618,7 +618,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_INT(P
618
618
  goto exit_binary_result_object;
619
619
  }
620
620
 
621
- Py_DECREF(x);
621
+ Py_DECREF_IMMORTAL(x);
622
622
  }
623
623
 
624
624
  if (slot2 != NULL) {
@@ -629,7 +629,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_INT(P
629
629
  goto exit_binary_result_object;
630
630
  }
631
631
 
632
- Py_DECREF(x);
632
+ Py_DECREF_IMMORTAL(x);
633
633
  }
634
634
 
635
635
  #if PYTHON_VERSION < 0x300
@@ -829,7 +829,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
829
829
  goto exit_binary_result_object;
830
830
  }
831
831
 
832
- Py_DECREF(x);
832
+ Py_DECREF_IMMORTAL(x);
833
833
  slot2 = NULL;
834
834
  }
835
835
  }
@@ -841,7 +841,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
841
841
  goto exit_binary_result_object;
842
842
  }
843
843
 
844
- Py_DECREF(x);
844
+ Py_DECREF_IMMORTAL(x);
845
845
  }
846
846
 
847
847
  if (slot2 != NULL) {
@@ -852,7 +852,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_INT_OBJECT(P
852
852
  goto exit_binary_result_object;
853
853
  }
854
854
 
855
- Py_DECREF(x);
855
+ Py_DECREF_IMMORTAL(x);
856
856
  }
857
857
 
858
858
  #if PYTHON_VERSION < 0x300
@@ -1124,7 +1124,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(P
1124
1124
  goto exit_binary_result_object;
1125
1125
  }
1126
1126
 
1127
- Py_DECREF(x);
1127
+ Py_DECREF_IMMORTAL(x);
1128
1128
  }
1129
1129
 
1130
1130
  if (slot2 != NULL) {
@@ -1135,7 +1135,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LONG(P
1135
1135
  goto exit_binary_result_object;
1136
1136
  }
1137
1137
 
1138
- Py_DECREF(x);
1138
+ Py_DECREF_IMMORTAL(x);
1139
1139
  }
1140
1140
 
1141
1141
  #if PYTHON_VERSION < 0x300
@@ -1362,7 +1362,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1362
1362
  goto exit_binary_result_object;
1363
1363
  }
1364
1364
 
1365
- Py_DECREF(x);
1365
+ Py_DECREF_IMMORTAL(x);
1366
1366
  slot2 = NULL;
1367
1367
  }
1368
1368
  }
@@ -1374,7 +1374,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1374
1374
  goto exit_binary_result_object;
1375
1375
  }
1376
1376
 
1377
- Py_DECREF(x);
1377
+ Py_DECREF_IMMORTAL(x);
1378
1378
  }
1379
1379
 
1380
1380
  if (slot2 != NULL) {
@@ -1385,7 +1385,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LONG_OBJECT(P
1385
1385
  goto exit_binary_result_object;
1386
1386
  }
1387
1387
 
1388
- Py_DECREF(x);
1388
+ Py_DECREF_IMMORTAL(x);
1389
1389
  }
1390
1390
 
1391
1391
  #if PYTHON_VERSION < 0x300
@@ -1687,7 +1687,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(
1687
1687
  goto exit_binary_result_object;
1688
1688
  }
1689
1689
 
1690
- Py_DECREF(x);
1690
+ Py_DECREF_IMMORTAL(x);
1691
1691
  }
1692
1692
 
1693
1693
  if (slot2 != NULL) {
@@ -1698,7 +1698,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LONG(
1698
1698
  goto exit_binary_result_object;
1699
1699
  }
1700
1700
 
1701
- Py_DECREF(x);
1701
+ Py_DECREF_IMMORTAL(x);
1702
1702
  }
1703
1703
 
1704
1704
  #if PYTHON_VERSION < 0x300
@@ -1935,7 +1935,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1935
1935
  goto exit_binary_result_object;
1936
1936
  }
1937
1937
 
1938
- Py_DECREF(x);
1938
+ Py_DECREF_IMMORTAL(x);
1939
1939
  slot2 = NULL;
1940
1940
  }
1941
1941
  }
@@ -1947,7 +1947,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1947
1947
  goto exit_binary_result_object;
1948
1948
  }
1949
1949
 
1950
- Py_DECREF(x);
1950
+ Py_DECREF_IMMORTAL(x);
1951
1951
  }
1952
1952
 
1953
1953
  if (slot2 != NULL) {
@@ -1958,7 +1958,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LONG_OBJECT(
1958
1958
  goto exit_binary_result_object;
1959
1959
  }
1960
1960
 
1961
- Py_DECREF(x);
1961
+ Py_DECREF_IMMORTAL(x);
1962
1962
  }
1963
1963
 
1964
1964
  #if PYTHON_VERSION < 0x300
@@ -2232,7 +2232,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_FLOAT(
2232
2232
  goto exit_binary_result_object;
2233
2233
  }
2234
2234
 
2235
- Py_DECREF(x);
2235
+ Py_DECREF_IMMORTAL(x);
2236
2236
  }
2237
2237
 
2238
2238
  if (slot2 != NULL) {
@@ -2243,7 +2243,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_FLOAT(
2243
2243
  goto exit_binary_result_object;
2244
2244
  }
2245
2245
 
2246
- Py_DECREF(x);
2246
+ Py_DECREF_IMMORTAL(x);
2247
2247
  }
2248
2248
 
2249
2249
  #if PYTHON_VERSION < 0x300
@@ -2431,7 +2431,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2431
2431
  goto exit_binary_result_object;
2432
2432
  }
2433
2433
 
2434
- Py_DECREF(x);
2434
+ Py_DECREF_IMMORTAL(x);
2435
2435
  slot2 = NULL;
2436
2436
  }
2437
2437
  }
@@ -2443,7 +2443,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2443
2443
  goto exit_binary_result_object;
2444
2444
  }
2445
2445
 
2446
- Py_DECREF(x);
2446
+ Py_DECREF_IMMORTAL(x);
2447
2447
  }
2448
2448
 
2449
2449
  if (slot2 != NULL) {
@@ -2454,7 +2454,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_FLOAT_OBJECT(
2454
2454
  goto exit_binary_result_object;
2455
2455
  }
2456
2456
 
2457
- Py_DECREF(x);
2457
+ Py_DECREF_IMMORTAL(x);
2458
2458
  }
2459
2459
 
2460
2460
  #if PYTHON_VERSION < 0x300
@@ -2679,7 +2679,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_FLOAT
2679
2679
  goto exit_binary_result_object;
2680
2680
  }
2681
2681
 
2682
- Py_DECREF(x);
2682
+ Py_DECREF_IMMORTAL(x);
2683
2683
  }
2684
2684
 
2685
2685
  if (slot2 != NULL) {
@@ -2690,7 +2690,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_FLOAT
2690
2690
  goto exit_binary_result_object;
2691
2691
  }
2692
2692
 
2693
- Py_DECREF(x);
2693
+ Py_DECREF_IMMORTAL(x);
2694
2694
  }
2695
2695
 
2696
2696
  #if PYTHON_VERSION < 0x300
@@ -2886,7 +2886,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2886
2886
  goto exit_binary_result_object;
2887
2887
  }
2888
2888
 
2889
- Py_DECREF(x);
2889
+ Py_DECREF_IMMORTAL(x);
2890
2890
  slot2 = NULL;
2891
2891
  }
2892
2892
  }
@@ -2898,7 +2898,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2898
2898
  goto exit_binary_result_object;
2899
2899
  }
2900
2900
 
2901
- Py_DECREF(x);
2901
+ Py_DECREF_IMMORTAL(x);
2902
2902
  }
2903
2903
 
2904
2904
  if (slot2 != NULL) {
@@ -2909,7 +2909,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_FLOAT_OBJECT
2909
2909
  goto exit_binary_result_object;
2910
2910
  }
2911
2911
 
2912
- Py_DECREF(x);
2912
+ Py_DECREF_IMMORTAL(x);
2913
2913
  }
2914
2914
 
2915
2915
  #if PYTHON_VERSION < 0x300
@@ -3087,7 +3087,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_FLOAT_LONG(PyObject *operand1, PyO
3087
3087
  goto exit_binary_result_object;
3088
3088
  }
3089
3089
 
3090
- Py_DECREF(x);
3090
+ Py_DECREF_IMMORTAL(x);
3091
3091
  }
3092
3092
 
3093
3093
  // Statically recognized that coercion is not possible with these types
@@ -3142,7 +3142,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_FLOAT_LONG(PyObject *operand1, Py
3142
3142
  goto exit_binary_result_object;
3143
3143
  }
3144
3144
 
3145
- Py_DECREF(x);
3145
+ Py_DECREF_IMMORTAL(x);
3146
3146
  }
3147
3147
 
3148
3148
  // Statically recognized that coercion is not possible with these types
@@ -3206,7 +3206,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_FLOAT_INT(PyObject *operand1, PyOb
3206
3206
  goto exit_binary_result_object;
3207
3207
  }
3208
3208
 
3209
- Py_DECREF(x);
3209
+ Py_DECREF_IMMORTAL(x);
3210
3210
  }
3211
3211
 
3212
3212
  // Statically recognized that coercion is not possible with these types
@@ -3259,7 +3259,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_FLOAT_INT(PyObject *operand1, PyO
3259
3259
  goto exit_binary_result_object;
3260
3260
  }
3261
3261
 
3262
- Py_DECREF(x);
3262
+ Py_DECREF_IMMORTAL(x);
3263
3263
  }
3264
3264
 
3265
3265
  // Statically recognized that coercion is not possible with these types
@@ -3320,7 +3320,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LONG_INT(PyObject *operand1, PyObj
3320
3320
  goto exit_binary_result_object;
3321
3321
  }
3322
3322
 
3323
- Py_DECREF(x);
3323
+ Py_DECREF_IMMORTAL(x);
3324
3324
  }
3325
3325
 
3326
3326
  // Statically recognized that coercion is not possible with these types
@@ -3373,7 +3373,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LONG_INT(PyObject *operand1, PyOb
3373
3373
  goto exit_binary_result_object;
3374
3374
  }
3375
3375
 
3376
- Py_DECREF(x);
3376
+ Py_DECREF_IMMORTAL(x);
3377
3377
  }
3378
3378
 
3379
3379
  // Statically recognized that coercion is not possible with these types
@@ -3830,7 +3830,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_STR(Py
3830
3830
  goto exit_binary_result_object;
3831
3831
  }
3832
3832
 
3833
- Py_DECREF(x);
3833
+ Py_DECREF_IMMORTAL(x);
3834
3834
  }
3835
3835
 
3836
3836
  #if PYTHON_VERSION < 0x300
@@ -3968,7 +3968,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_STR_OBJECT(Py
3968
3968
  goto exit_binary_result_object;
3969
3969
  }
3970
3970
 
3971
- Py_DECREF(x);
3971
+ Py_DECREF_IMMORTAL(x);
3972
3972
  }
3973
3973
 
3974
3974
  #if PYTHON_VERSION < 0x300
@@ -4135,7 +4135,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_UNICOD
4135
4135
  goto exit_binary_result_object;
4136
4136
  }
4137
4137
 
4138
- Py_DECREF(x);
4138
+ Py_DECREF_IMMORTAL(x);
4139
4139
  }
4140
4140
 
4141
4141
  #if PYTHON_VERSION < 0x300
@@ -4278,7 +4278,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_UNICODE_OBJEC
4278
4278
  goto exit_binary_result_object;
4279
4279
  }
4280
4280
 
4281
- Py_DECREF(x);
4281
+ Py_DECREF_IMMORTAL(x);
4282
4282
  }
4283
4283
 
4284
4284
  #if PYTHON_VERSION < 0x300
@@ -4446,7 +4446,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_BYTES(
4446
4446
  goto exit_binary_result_object;
4447
4447
  }
4448
4448
 
4449
- Py_DECREF(x);
4449
+ Py_DECREF_IMMORTAL(x);
4450
4450
  }
4451
4451
 
4452
4452
  #if PYTHON_VERSION < 0x300
@@ -4585,7 +4585,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_BYTES_OBJECT(
4585
4585
  goto exit_binary_result_object;
4586
4586
  }
4587
4587
 
4588
- Py_DECREF(x);
4588
+ Py_DECREF_IMMORTAL(x);
4589
4589
  }
4590
4590
 
4591
4591
  #if PYTHON_VERSION < 0x300
@@ -4699,7 +4699,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_TUPLE_TUPLE(PyObject *operand1, Py
4699
4699
  // Not every code path will make use of all possible results.
4700
4700
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4701
4701
 
4702
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4702
+ // TODO: Have this more globally passed in
4703
+ PyThreadState *tstate = PyThreadState_GET();
4704
+
4705
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4703
4706
 
4704
4707
  assert(x != Py_NotImplemented);
4705
4708
  obj_result = x;
@@ -4749,7 +4752,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_TUPLE(
4749
4752
  goto exit_binary_result_object;
4750
4753
  }
4751
4754
 
4752
- Py_DECREF(x);
4755
+ Py_DECREF_IMMORTAL(x);
4753
4756
  }
4754
4757
 
4755
4758
  #if PYTHON_VERSION < 0x300
@@ -4828,7 +4831,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_TUPLE(PyObject *operand1, P
4828
4831
  // Not every code path will make use of all possible results.
4829
4832
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4830
4833
 
4831
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4834
+ // TODO: Have this more globally passed in
4835
+ PyThreadState *tstate = PyThreadState_GET();
4836
+
4837
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4832
4838
 
4833
4839
  assert(x != Py_NotImplemented);
4834
4840
  obj_result = x;
@@ -4886,7 +4892,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_TUPLE_OBJECT(
4886
4892
  goto exit_binary_result_object;
4887
4893
  }
4888
4894
 
4889
- Py_DECREF(x);
4895
+ Py_DECREF_IMMORTAL(x);
4890
4896
  }
4891
4897
 
4892
4898
  #if PYTHON_VERSION < 0x300
@@ -4960,7 +4966,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_TUPLE_OBJECT(PyObject *operand1, P
4960
4966
  // Not every code path will make use of all possible results.
4961
4967
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
4962
4968
 
4963
- PyObject *x = TUPLE_CONCAT(operand1, operand2);
4969
+ // TODO: Have this more globally passed in
4970
+ PyThreadState *tstate = PyThreadState_GET();
4971
+
4972
+ PyObject *x = TUPLE_CONCAT(tstate, operand1, operand2);
4964
4973
 
4965
4974
  assert(x != Py_NotImplemented);
4966
4975
  obj_result = x;
@@ -4999,7 +5008,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LIST_LIST(PyObject *operand1, PyOb
4999
5008
  // Not every code path will make use of all possible results.
5000
5009
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5001
5010
 
5002
- PyObject *x = LIST_CONCAT(operand1, operand2);
5011
+ // TODO: Have this more globally passed in
5012
+ PyThreadState *tstate = PyThreadState_GET();
5013
+
5014
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5003
5015
  assert(x != Py_NotImplemented);
5004
5016
 
5005
5017
  obj_result = x;
@@ -5048,7 +5060,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_OBJECT_LIST(P
5048
5060
  goto exit_binary_result_object;
5049
5061
  }
5050
5062
 
5051
- Py_DECREF(x);
5063
+ Py_DECREF_IMMORTAL(x);
5052
5064
  }
5053
5065
 
5054
5066
  #if PYTHON_VERSION < 0x300
@@ -5127,7 +5139,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_LIST(PyObject *operand1, Py
5127
5139
  // Not every code path will make use of all possible results.
5128
5140
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5129
5141
 
5130
- PyObject *x = LIST_CONCAT(operand1, operand2);
5142
+ // TODO: Have this more globally passed in
5143
+ PyThreadState *tstate = PyThreadState_GET();
5144
+
5145
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5131
5146
  assert(x != Py_NotImplemented);
5132
5147
 
5133
5148
  obj_result = x;
@@ -5184,7 +5199,7 @@ static HEDLEY_NEVER_INLINE PyObject *__BINARY_OPERATION_ADD_OBJECT_LIST_OBJECT(P
5184
5199
  goto exit_binary_result_object;
5185
5200
  }
5186
5201
 
5187
- Py_DECREF(x);
5202
+ Py_DECREF_IMMORTAL(x);
5188
5203
  }
5189
5204
 
5190
5205
  #if PYTHON_VERSION < 0x300
@@ -5258,7 +5273,10 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_LIST_OBJECT(PyObject *operand1, Py
5258
5273
  // Not every code path will make use of all possible results.
5259
5274
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5260
5275
 
5261
- PyObject *x = LIST_CONCAT(operand1, operand2);
5276
+ // TODO: Have this more globally passed in
5277
+ PyThreadState *tstate = PyThreadState_GET();
5278
+
5279
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5262
5280
  assert(x != Py_NotImplemented);
5263
5281
 
5264
5282
  obj_result = x;
@@ -5297,7 +5315,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LIST_LIST(PyObject *operand1, PyO
5297
5315
  // Not every code path will make use of all possible results.
5298
5316
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5299
5317
 
5300
- PyObject *x = LIST_CONCAT(operand1, operand2);
5318
+ // TODO: Have this more globally passed in
5319
+ PyThreadState *tstate = PyThreadState_GET();
5320
+
5321
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5301
5322
  assert(x != Py_NotImplemented);
5302
5323
 
5303
5324
  obj_result = x;
@@ -5348,7 +5369,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_OBJECT_LIST(
5348
5369
  goto exit_binary_result_object;
5349
5370
  }
5350
5371
 
5351
- Py_DECREF(x);
5372
+ Py_DECREF_IMMORTAL(x);
5352
5373
  }
5353
5374
 
5354
5375
  #if PYTHON_VERSION < 0x300
@@ -5435,7 +5456,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_LIST(PyObject *operand1, P
5435
5456
  // Not every code path will make use of all possible results.
5436
5457
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5437
5458
 
5438
- PyObject *x = LIST_CONCAT(operand1, operand2);
5459
+ // TODO: Have this more globally passed in
5460
+ PyThreadState *tstate = PyThreadState_GET();
5461
+
5462
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5439
5463
  assert(x != Py_NotImplemented);
5440
5464
 
5441
5465
  obj_result = x;
@@ -5494,7 +5518,7 @@ static HEDLEY_NEVER_INLINE nuitka_bool __BINARY_OPERATION_ADD_NBOOL_LIST_OBJECT(
5494
5518
  goto exit_binary_result_object;
5495
5519
  }
5496
5520
 
5497
- Py_DECREF(x);
5521
+ Py_DECREF_IMMORTAL(x);
5498
5522
  }
5499
5523
 
5500
5524
  #if PYTHON_VERSION < 0x300
@@ -5576,7 +5600,10 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_LIST_OBJECT(PyObject *operand1, P
5576
5600
  // Not every code path will make use of all possible results.
5577
5601
  NUITKA_MAY_BE_UNUSED PyObject *obj_result;
5578
5602
 
5579
- PyObject *x = LIST_CONCAT(operand1, operand2);
5603
+ // TODO: Have this more globally passed in
5604
+ PyThreadState *tstate = PyThreadState_GET();
5605
+
5606
+ PyObject *x = LIST_CONCAT(tstate, operand1, operand2);
5580
5607
  assert(x != Py_NotImplemented);
5581
5608
 
5582
5609
  obj_result = x;
@@ -5871,7 +5898,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5871
5898
  goto exit_binary_result_object;
5872
5899
  }
5873
5900
 
5874
- Py_DECREF(x);
5901
+ Py_DECREF_IMMORTAL(x);
5875
5902
  slot2 = NULL;
5876
5903
  }
5877
5904
  }
@@ -5883,7 +5910,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5883
5910
  goto exit_binary_result_object;
5884
5911
  }
5885
5912
 
5886
- Py_DECREF(x);
5913
+ Py_DECREF_IMMORTAL(x);
5887
5914
  }
5888
5915
 
5889
5916
  if (slot2 != NULL) {
@@ -5894,7 +5921,7 @@ static PyObject *_BINARY_OPERATION_ADD_OBJECT_OBJECT_OBJECT(PyObject *operand1,
5894
5921
  goto exit_binary_result_object;
5895
5922
  }
5896
5923
 
5897
- Py_DECREF(x);
5924
+ Py_DECREF_IMMORTAL(x);
5898
5925
  }
5899
5926
 
5900
5927
  #if PYTHON_VERSION < 0x300
@@ -6081,7 +6108,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6081
6108
  goto exit_binary_result_object;
6082
6109
  }
6083
6110
 
6084
- Py_DECREF(x);
6111
+ Py_DECREF_IMMORTAL(x);
6085
6112
  slot2 = NULL;
6086
6113
  }
6087
6114
  }
@@ -6093,7 +6120,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6093
6120
  goto exit_binary_result_object;
6094
6121
  }
6095
6122
 
6096
- Py_DECREF(x);
6123
+ Py_DECREF_IMMORTAL(x);
6097
6124
  }
6098
6125
 
6099
6126
  if (slot2 != NULL) {
@@ -6104,7 +6131,7 @@ static nuitka_bool _BINARY_OPERATION_ADD_NBOOL_OBJECT_OBJECT(PyObject *operand1,
6104
6131
  goto exit_binary_result_object;
6105
6132
  }
6106
6133
 
6107
- Py_DECREF(x);
6134
+ Py_DECREF_IMMORTAL(x);
6108
6135
  }
6109
6136
 
6110
6137
  #if PYTHON_VERSION < 0x300
@@ -12,7 +12,7 @@
12
12
  #include "nuitka/prelude.h"
13
13
  #endif
14
14
 
15
- static PyObject *LIST_CONCAT(PyObject *operand1, PyObject *operand2) {
15
+ static PyObject *LIST_CONCAT(PyThreadState *tstate, PyObject *operand1, PyObject *operand2) {
16
16
  CHECK_OBJECT(operand1);
17
17
  assert(PyList_CheckExact(operand1));
18
18
  CHECK_OBJECT(operand2);
@@ -20,7 +20,7 @@ static PyObject *LIST_CONCAT(PyObject *operand1, PyObject *operand2) {
20
20
 
21
21
  Py_ssize_t size = Py_SIZE(operand1) + Py_SIZE(operand2);
22
22
 
23
- PyListObject *result = (PyListObject *)MAKE_LIST_EMPTY(size);
23
+ PyListObject *result = (PyListObject *)MAKE_LIST_EMPTY(tstate, size);
24
24
  if (unlikely(result == NULL)) {
25
25
  return NULL;
26
26
  }
@@ -89,13 +89,13 @@ static PyLongObject *Nuitka_LongNew(Py_ssize_t size) {
89
89
  Py_ssize_t ndigits = size ? size : 1;
90
90
 
91
91
  PyLongObject *result =
92
- (PyLongObject *)PyObject_MALLOC(offsetof(PyLongObject, long_value.ob_digit) + ndigits * sizeof(digit));
92
+ (PyLongObject *)NuitkaObject_Malloc(offsetof(PyLongObject, long_value.ob_digit) + ndigits * sizeof(digit));
93
93
  _PyLong_SetSignAndDigitCount(result, size != 0, size);
94
94
  PyObject_INIT(result, &PyLong_Type);
95
95
  result->long_value.ob_digit[0] = 0;
96
96
  return result;
97
97
  #elif PYTHON_VERSION >= 0x300
98
- PyLongObject *result = (PyLongObject *)PyObject_MALLOC(offsetof(PyLongObject, ob_digit) + size * sizeof(digit));
98
+ PyLongObject *result = (PyLongObject *)NuitkaObject_Malloc(offsetof(PyLongObject, ob_digit) + size * sizeof(digit));
99
99
  return (PyLongObject *)PyObject_INIT_VAR(result, &PyLong_Type, size);
100
100
  #else
101
101
  return (PyLongObject *)PyObject_NEW_VAR(PyLongObject, &PyLong_Type, size);