Nuitka-winsvc 2.4.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.
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +2 -1
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/RECORD +294 -271
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +31 -0
- nuitka/HardImportRegistry.py +8 -0
- nuitka/MainControl.py +9 -4
- nuitka/OptionParsing.py +105 -52
- nuitka/Options.py +73 -16
- nuitka/OutputDirectories.py +7 -2
- nuitka/PostProcessing.py +69 -38
- nuitka/Progress.py +16 -1
- nuitka/PythonVersions.py +2 -1
- nuitka/Serialization.py +4 -2
- nuitka/Tracing.py +69 -1
- nuitka/Version.py +2 -2
- nuitka/build/Backend.scons +45 -5
- nuitka/build/CCompilerVersion.scons +6 -0
- nuitka/build/Onefile.scons +6 -0
- nuitka/build/SconsCaching.py +12 -2
- nuitka/build/SconsCompilerSettings.py +17 -6
- nuitka/build/SconsInterface.py +1 -0
- nuitka/build/SconsUtils.py +5 -0
- nuitka/build/include/nuitka/allocator.h +124 -1
- nuitka/build/include/nuitka/calling.h +6 -6
- nuitka/build/include/nuitka/compiled_asyncgen.h +10 -7
- nuitka/build/include/nuitka/compiled_frame.h +2 -1
- nuitka/build/include/nuitka/constants.h +6 -0
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/exceptions.h +264 -121
- nuitka/build/include/nuitka/helper/attributes.h +0 -4
- nuitka/build/include/nuitka/helper/calling_generated.h +52 -52
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/dictionaries.h +65 -29
- nuitka/build/include/nuitka/helper/ints.h +86 -37
- nuitka/build/include/nuitka/helper/iterators.h +82 -34
- nuitka/build/include/nuitka/helper/operations.h +3 -0
- nuitka/build/include/nuitka/helper/operations_binary_add.h +6 -0
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +6 -0
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +3 -0
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +3 -0
- nuitka/build/include/nuitka/helper/raising.h +47 -28
- nuitka/build/include/nuitka/helper/richcomparisons.h +7 -0
- nuitka/build/include/nuitka/helpers.h +12 -2
- nuitka/build/include/nuitka/prelude.h +35 -25
- nuitka/build/include/nuitka/printing.h +9 -7
- nuitka/build/include/nuitka/threading.h +15 -1
- nuitka/build/include/nuitka/type_aliases.h +3 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +45 -39
- nuitka/build/static_src/CompiledCellType.c +6 -4
- nuitka/build/static_src/CompiledCodeHelpers.c +104 -40
- nuitka/build/static_src/CompiledCoroutineType.c +40 -30
- nuitka/build/static_src/CompiledFrameType.c +110 -79
- nuitka/build/static_src/CompiledFunctionType.c +173 -151
- nuitka/build/static_src/CompiledGeneratorType.c +51 -49
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +424 -46
- nuitka/build/static_src/CompiledMethodType.c +10 -13
- nuitka/build/static_src/HelpersAllocator.c +270 -32
- nuitka/build/static_src/HelpersAttributes.c +0 -21
- nuitka/build/static_src/HelpersBuiltin.c +22 -13
- nuitka/build/static_src/HelpersCalling.c +7 -7
- nuitka/build/static_src/HelpersCallingGenerated.c +70 -70
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +18 -4
- nuitka/build/static_src/HelpersComparisonEqUtils.c +1 -0
- nuitka/build/static_src/HelpersComparisonGe.c +18 -4
- nuitka/build/static_src/HelpersComparisonGt.c +18 -4
- nuitka/build/static_src/HelpersComparisonLe.c +18 -4
- nuitka/build/static_src/HelpersComparisonLt.c +18 -4
- nuitka/build/static_src/HelpersComparisonNe.c +18 -4
- nuitka/build/static_src/HelpersConsole.c +34 -8
- nuitka/build/static_src/HelpersConstantsBlob.c +10 -4
- nuitka/build/static_src/HelpersDictionaries.c +181 -34
- nuitka/build/static_src/HelpersDictionariesGenerated.c +0 -106
- nuitka/build/static_src/HelpersExceptions.c +24 -50
- nuitka/build/static_src/HelpersFiles.c +79 -5
- nuitka/build/static_src/HelpersImport.c +13 -9
- nuitka/build/static_src/HelpersImportHard.c +23 -46
- nuitka/build/static_src/HelpersLists.c +98 -9
- nuitka/build/static_src/HelpersMatching.c +1 -1
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +224 -6
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +3 -0
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +8 -2
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +14 -8
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +36 -36
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +1 -0
- nuitka/build/static_src/HelpersOperationBinaryMod.c +22 -10
- nuitka/build/static_src/HelpersOperationBinaryMult.c +17 -7
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +14 -8
- nuitka/build/static_src/HelpersOperationBinaryPow.c +24 -24
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +4 -4
- nuitka/build/static_src/HelpersOperationBinarySub.c +229 -8
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +8 -2
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +162 -10
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +20 -20
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +1 -0
- nuitka/build/static_src/HelpersOperationInplaceMod.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceMult.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +11 -6
- nuitka/build/static_src/HelpersOperationInplacePow.c +20 -20
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +4 -4
- nuitka/build/static_src/HelpersOperationInplaceSub.c +163 -10
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +6 -1
- nuitka/build/static_src/HelpersProfiling.c +1 -1
- nuitka/build/static_src/HelpersRaising.c +255 -310
- nuitka/build/static_src/HelpersStrings.c +1 -1
- nuitka/build/static_src/HelpersTuples.c +1 -1
- nuitka/build/static_src/HelpersTypes.c +98 -2
- nuitka/build/static_src/MainProgram.c +117 -29
- nuitka/build/static_src/MetaPathBasedLoader.c +18 -19
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +134 -11
- nuitka/build/static_src/OnefileBootstrap.c +6 -1
- nuitka/code_generation/AsyncgenCodes.py +2 -6
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +269 -167
- nuitka/code_generation/BuiltinCodes.py +9 -1
- nuitka/code_generation/CallCodes.py +16 -16
- nuitka/code_generation/CodeGeneration.py +14 -2
- nuitka/code_generation/CodeHelperSelection.py +1 -1
- nuitka/code_generation/CodeHelpers.py +4 -1
- nuitka/code_generation/CodeObjectCodes.py +2 -2
- nuitka/code_generation/ComparisonCodes.py +13 -2
- nuitka/code_generation/ComparisonHelperDefinitions.py +23 -8
- nuitka/code_generation/Contexts.py +28 -16
- nuitka/code_generation/CoroutineCodes.py +2 -6
- nuitka/code_generation/DictCodes.py +3 -3
- nuitka/code_generation/ErrorCodes.py +34 -50
- nuitka/code_generation/ExceptionCodes.py +165 -96
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +25 -10
- nuitka/code_generation/FrameCodes.py +4 -11
- nuitka/code_generation/FunctionCodes.py +2 -6
- nuitka/code_generation/GeneratorCodes.py +2 -6
- nuitka/code_generation/GlobalConstants.py +8 -2
- nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
- nuitka/code_generation/IteratorCodes.py +67 -54
- nuitka/code_generation/LineNumberCodes.py +1 -3
- nuitka/code_generation/ModuleCodes.py +28 -4
- nuitka/code_generation/OperationCodes.py +51 -20
- nuitka/code_generation/PackageResourceCodes.py +37 -0
- nuitka/code_generation/RaisingCodes.py +164 -90
- nuitka/code_generation/Reports.py +13 -5
- nuitka/code_generation/ReturnCodes.py +2 -16
- nuitka/code_generation/TryCodes.py +12 -24
- nuitka/code_generation/TypeAliasCodes.py +48 -0
- nuitka/code_generation/VariableCodes.py +99 -40
- nuitka/code_generation/VariableDeclarations.py +8 -8
- nuitka/code_generation/YieldCodes.py +1 -1
- nuitka/code_generation/c_types/CTypeBases.py +10 -2
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +3 -0
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +3 -4
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +70 -25
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +1 -1
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +16 -6
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesConstants.py +11 -3
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +15 -16
- nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -10
- nuitka/code_generation/templates/CodeTemplatesFunction.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesIterators.py +1 -35
- nuitka/code_generation/templates/CodeTemplatesModules.py +34 -4
- nuitka/code_generation/templates/CodeTemplatesVariables.py +73 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +3 -3
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +3 -3
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +0 -105
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -2
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +7 -7
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +4 -4
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +1 -1
- nuitka/containers/Namedtuples.py +6 -0
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/distutils/Build.py +14 -0
- nuitka/distutils/DistutilCommands.py +50 -10
- nuitka/finalizations/Finalization.py +3 -3
- nuitka/finalizations/FinalizeMarkups.py +10 -14
- nuitka/freezer/DependsExe.py +13 -3
- nuitka/freezer/DllDependenciesMacOS.py +18 -1
- nuitka/freezer/DllDependenciesWin32.py +26 -12
- nuitka/freezer/ImportDetection.py +3 -0
- nuitka/freezer/IncludedDataFiles.py +31 -8
- nuitka/freezer/IncludedEntryPoints.py +3 -2
- nuitka/freezer/Standalone.py +76 -18
- nuitka/importing/Importing.py +33 -6
- nuitka/importing/Recursion.py +12 -1
- nuitka/importing/StandardLibrary.py +57 -59
- nuitka/nodes/AsyncgenNodes.py +3 -6
- nuitka/nodes/BuiltinIteratorNodes.py +1 -1
- nuitka/nodes/BuiltinRefNodes.py +14 -30
- nuitka/nodes/ChildrenHavingMixins.py +439 -46
- nuitka/nodes/ConditionalNodes.py +3 -2
- nuitka/nodes/CoroutineNodes.py +3 -6
- nuitka/nodes/ExceptionNodes.py +102 -26
- nuitka/nodes/ExpressionBasesGenerated.py +288 -4
- nuitka/nodes/FrameNodes.py +22 -11
- nuitka/nodes/FunctionNodes.py +3 -3
- nuitka/nodes/GeneratorNodes.py +3 -6
- nuitka/nodes/HardImportNodesGenerated.py +182 -0
- nuitka/nodes/ImportNodes.py +2 -2
- nuitka/nodes/NodeBases.py +28 -1
- nuitka/nodes/NodeMakingHelpers.py +71 -50
- nuitka/nodes/OperatorNodesUnary.py +128 -3
- nuitka/nodes/OsSysNodes.py +37 -6
- nuitka/nodes/OutlineNodes.py +2 -2
- nuitka/nodes/StatementBasesGenerated.py +0 -2
- nuitka/nodes/StatementNodes.py +8 -7
- nuitka/nodes/SubscriptNodes.py +1 -1
- nuitka/nodes/TypeNodes.py +28 -1
- nuitka/nodes/shapes/BuiltinTypeShapes.py +24 -7
- nuitka/nodes/shapes/ShapeMixins.py +17 -0
- nuitka/nodes/shapes/StandardShapes.py +53 -1
- nuitka/optimizations/BytecodeDemotion.py +2 -1
- nuitka/plugins/PluginBase.py +64 -22
- nuitka/plugins/Plugins.py +6 -3
- nuitka/plugins/standard/AntiBloatPlugin.py +23 -12
- nuitka/plugins/standard/ImplicitImports.py +1 -13
- nuitka/plugins/standard/KivyPlugin.py +3 -12
- nuitka/plugins/standard/MatplotlibPlugin.py +12 -1
- nuitka/plugins/standard/MultiprocessingPlugin.py +11 -20
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PySidePyQtPlugin.py +8 -0
- nuitka/plugins/standard/TkinterPlugin.py +0 -56
- nuitka/plugins/standard/TransformersPlugin.py +70 -275
- nuitka/plugins/standard/standard.nuitka-package.config.yml +510 -28
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +35 -2
- nuitka/reports/CompilationReportReader.py +12 -0
- nuitka/reports/Reports.py +11 -0
- nuitka/specs/BuiltinParameterSpecs.py +5 -1
- nuitka/specs/HardImportSpecs.py +7 -0
- nuitka/specs/ParameterSpecs.py +4 -4
- nuitka/tools/general/dll_report/__main__.py +10 -1
- nuitka/tools/onefile_compressor/OnefileCompressor.py +1 -1
- nuitka/tools/specialize/CTypeDescriptions.py +158 -9
- nuitka/tools/specialize/SpecializeC.py +218 -56
- nuitka/tools/testing/Common.py +70 -63
- nuitka/tools/testing/compare_with_cpython/__main__.py +3 -1
- nuitka/tools/testing/measure_construct_performance/__main__.py +1 -8
- nuitka/tools/testing/run_nuitka_tests/__main__.py +77 -11
- nuitka/tools/watch/AutoStage.py +1 -0
- nuitka/tree/Building.py +10 -37
- nuitka/tree/ComplexCallHelperFunctions.py +4 -0
- nuitka/tree/ReformulationAssertStatements.py +31 -14
- nuitka/tree/ReformulationAssignmentStatements.py +5 -1
- nuitka/tree/ReformulationClasses3.py +94 -19
- nuitka/tree/ReformulationDictionaryCreation.py +1 -0
- nuitka/tree/ReformulationFunctionStatements.py +1 -1
- nuitka/tree/ReformulationMatchStatements.py +3 -1
- nuitka/tree/ReformulationYieldExpressions.py +23 -5
- nuitka/utils/CommandLineOptions.py +27 -3
- nuitka/utils/Download.py +2 -2
- nuitka/utils/Execution.py +36 -31
- nuitka/utils/FileOperations.py +39 -54
- nuitka/utils/Importing.py +2 -14
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +9 -4
- nuitka/utils/Json.py +2 -2
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/Utils.py +17 -0
- {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka-run.cmd +0 -0
- {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka.cmd +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1407,8 +1407,8 @@ static inline bool _INPLACE_OPERATION_POW_INT_INT(PyObject **operand1, PyObject
|
|
|
1407
1407
|
break;
|
|
1408
1408
|
}
|
|
1409
1409
|
if (ix / temp != prev) {
|
|
1410
|
-
PyObject *operand1_long =
|
|
1411
|
-
PyObject *operand2_long =
|
|
1410
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
1411
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
1412
1412
|
|
|
1413
1413
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
1414
1414
|
|
|
@@ -1427,8 +1427,8 @@ static inline bool _INPLACE_OPERATION_POW_INT_INT(PyObject **operand1, PyObject
|
|
|
1427
1427
|
temp = (unsigned long)temp * temp;
|
|
1428
1428
|
|
|
1429
1429
|
if (prev != 0 && temp / prev != prev) {
|
|
1430
|
-
PyObject *operand1_long =
|
|
1431
|
-
PyObject *operand2_long =
|
|
1430
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
1431
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
1432
1432
|
|
|
1433
1433
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
1434
1434
|
|
|
@@ -1451,7 +1451,7 @@ exit_result_ok_clong:
|
|
|
1451
1451
|
|
|
1452
1452
|
// That's our return value then. As we use a dedicated variable, it's
|
|
1453
1453
|
// OK that way.
|
|
1454
|
-
*operand1 =
|
|
1454
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
1455
1455
|
goto exit_result_ok;
|
|
1456
1456
|
|
|
1457
1457
|
exit_result_object:
|
|
@@ -1695,8 +1695,8 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_INT(PyObject **operand1, PyObje
|
|
|
1695
1695
|
break;
|
|
1696
1696
|
}
|
|
1697
1697
|
if (ix / temp != prev) {
|
|
1698
|
-
PyObject *operand1_long =
|
|
1699
|
-
PyObject *operand2_long =
|
|
1698
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
1699
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
1700
1700
|
|
|
1701
1701
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
1702
1702
|
|
|
@@ -1715,8 +1715,8 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_INT(PyObject **operand1, PyObje
|
|
|
1715
1715
|
temp = (unsigned long)temp * temp;
|
|
1716
1716
|
|
|
1717
1717
|
if (prev != 0 && temp / prev != prev) {
|
|
1718
|
-
PyObject *operand1_long =
|
|
1719
|
-
PyObject *operand2_long =
|
|
1718
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
1719
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
1720
1720
|
|
|
1721
1721
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
1722
1722
|
|
|
@@ -1739,7 +1739,7 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_INT(PyObject **operand1, PyObje
|
|
|
1739
1739
|
|
|
1740
1740
|
// That's our return value then. As we use a dedicated variable, it's
|
|
1741
1741
|
// OK that way.
|
|
1742
|
-
*operand1 =
|
|
1742
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
1743
1743
|
goto exit_result_ok;
|
|
1744
1744
|
|
|
1745
1745
|
exit_result_object:
|
|
@@ -1988,8 +1988,8 @@ static inline bool _INPLACE_OPERATION_POW_INT_OBJECT(PyObject **operand1, PyObje
|
|
|
1988
1988
|
break;
|
|
1989
1989
|
}
|
|
1990
1990
|
if (ix / temp != prev) {
|
|
1991
|
-
PyObject *operand1_long =
|
|
1992
|
-
PyObject *operand2_long =
|
|
1991
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
1992
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
1993
1993
|
|
|
1994
1994
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
1995
1995
|
|
|
@@ -2008,8 +2008,8 @@ static inline bool _INPLACE_OPERATION_POW_INT_OBJECT(PyObject **operand1, PyObje
|
|
|
2008
2008
|
temp = (unsigned long)temp * temp;
|
|
2009
2009
|
|
|
2010
2010
|
if (prev != 0 && temp / prev != prev) {
|
|
2011
|
-
PyObject *operand1_long =
|
|
2012
|
-
PyObject *operand2_long =
|
|
2011
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
2012
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
2013
2013
|
|
|
2014
2014
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
2015
2015
|
|
|
@@ -2032,7 +2032,7 @@ static inline bool _INPLACE_OPERATION_POW_INT_OBJECT(PyObject **operand1, PyObje
|
|
|
2032
2032
|
|
|
2033
2033
|
// That's our return value then. As we use a dedicated variable, it's
|
|
2034
2034
|
// OK that way.
|
|
2035
|
-
*operand1 =
|
|
2035
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
2036
2036
|
goto exit_result_ok;
|
|
2037
2037
|
|
|
2038
2038
|
exit_result_object:
|
|
@@ -2534,8 +2534,8 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_OBJECT(PyObject **operand1, PyO
|
|
|
2534
2534
|
break;
|
|
2535
2535
|
}
|
|
2536
2536
|
if (ix / temp != prev) {
|
|
2537
|
-
PyObject *operand1_long =
|
|
2538
|
-
PyObject *operand2_long =
|
|
2537
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
2538
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
2539
2539
|
|
|
2540
2540
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
2541
2541
|
|
|
@@ -2554,8 +2554,8 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_OBJECT(PyObject **operand1, PyO
|
|
|
2554
2554
|
temp = (unsigned long)temp * temp;
|
|
2555
2555
|
|
|
2556
2556
|
if (prev != 0 && temp / prev != prev) {
|
|
2557
|
-
PyObject *operand1_long =
|
|
2558
|
-
PyObject *operand2_long =
|
|
2557
|
+
PyObject *operand1_long = Nuitka_PyLong_FromLong(a);
|
|
2558
|
+
PyObject *operand2_long = Nuitka_PyLong_FromLong(b);
|
|
2559
2559
|
|
|
2560
2560
|
PyObject *r = _BINARY_OPERATION_POW_OBJECT_LONG_LONG(operand1_long, operand2_long);
|
|
2561
2561
|
|
|
@@ -2578,7 +2578,7 @@ static inline bool _INPLACE_OPERATION_POW_OBJECT_OBJECT(PyObject **operand1, PyO
|
|
|
2578
2578
|
|
|
2579
2579
|
// That's our return value then. As we use a dedicated variable, it's
|
|
2580
2580
|
// OK that way.
|
|
2581
|
-
*operand1 =
|
|
2581
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
2582
2582
|
goto exit_result_ok;
|
|
2583
2583
|
|
|
2584
2584
|
exit_result_object:
|
|
@@ -550,7 +550,7 @@ exit_result_ok_clong:
|
|
|
550
550
|
|
|
551
551
|
// That's our return value then. As we use a dedicated variable, it's
|
|
552
552
|
// OK that way.
|
|
553
|
-
*operand1 =
|
|
553
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
554
554
|
goto exit_result_ok;
|
|
555
555
|
|
|
556
556
|
exit_result_ok_left:
|
|
@@ -806,7 +806,7 @@ static inline bool _INPLACE_OPERATION_RSHIFT_OBJECT_INT(PyObject **operand1, PyO
|
|
|
806
806
|
|
|
807
807
|
// That's our return value then. As we use a dedicated variable, it's
|
|
808
808
|
// OK that way.
|
|
809
|
-
*operand1 =
|
|
809
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
810
810
|
goto exit_result_ok;
|
|
811
811
|
|
|
812
812
|
exit_result_ok_left:
|
|
@@ -1067,7 +1067,7 @@ static inline bool _INPLACE_OPERATION_RSHIFT_INT_OBJECT(PyObject **operand1, PyO
|
|
|
1067
1067
|
|
|
1068
1068
|
// That's our return value then. As we use a dedicated variable, it's
|
|
1069
1069
|
// OK that way.
|
|
1070
|
-
*operand1 =
|
|
1070
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
1071
1071
|
goto exit_result_ok;
|
|
1072
1072
|
|
|
1073
1073
|
exit_result_ok_left:
|
|
@@ -1301,7 +1301,7 @@ static inline bool _INPLACE_OPERATION_RSHIFT_OBJECT_OBJECT(PyObject **operand1,
|
|
|
1301
1301
|
|
|
1302
1302
|
// That's our return value then. As we use a dedicated variable, it's
|
|
1303
1303
|
// OK that way.
|
|
1304
|
-
*operand1 =
|
|
1304
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
1305
1305
|
goto exit_result_ok;
|
|
1306
1306
|
|
|
1307
1307
|
exit_result_ok_left:
|
|
@@ -46,6 +46,7 @@ static inline bool _INPLACE_OPERATION_SUB_INT_INT(PyObject **operand1, PyObject
|
|
|
46
46
|
clong_result = x;
|
|
47
47
|
goto exit_result_ok_clong;
|
|
48
48
|
}
|
|
49
|
+
|
|
49
50
|
{
|
|
50
51
|
PyObject *operand1_object = *operand1;
|
|
51
52
|
PyObject *operand2_object = operand2;
|
|
@@ -64,7 +65,7 @@ exit_result_ok_clong:
|
|
|
64
65
|
|
|
65
66
|
// That's our return value then. As we use a dedicated variable, it's
|
|
66
67
|
// OK that way.
|
|
67
|
-
*operand1 =
|
|
68
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
68
69
|
goto exit_result_ok;
|
|
69
70
|
|
|
70
71
|
exit_result_object:
|
|
@@ -289,6 +290,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **operand1, PyObje
|
|
|
289
290
|
clong_result = x;
|
|
290
291
|
goto exit_result_ok_clong;
|
|
291
292
|
}
|
|
293
|
+
|
|
292
294
|
{
|
|
293
295
|
PyObject *operand1_object = *operand1;
|
|
294
296
|
PyObject *operand2_object = operand2;
|
|
@@ -307,7 +309,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_INT(PyObject **operand1, PyObje
|
|
|
307
309
|
|
|
308
310
|
// That's our return value then. As we use a dedicated variable, it's
|
|
309
311
|
// OK that way.
|
|
310
|
-
*operand1 =
|
|
312
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
311
313
|
goto exit_result_ok;
|
|
312
314
|
|
|
313
315
|
exit_result_object:
|
|
@@ -537,6 +539,7 @@ static inline bool _INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **operand1, PyObje
|
|
|
537
539
|
clong_result = x;
|
|
538
540
|
goto exit_result_ok_clong;
|
|
539
541
|
}
|
|
542
|
+
|
|
540
543
|
{
|
|
541
544
|
PyObject *operand1_object = *operand1;
|
|
542
545
|
PyObject *operand2_object = operand2;
|
|
@@ -555,7 +558,7 @@ static inline bool _INPLACE_OPERATION_SUB_INT_OBJECT(PyObject **operand1, PyObje
|
|
|
555
558
|
|
|
556
559
|
// That's our return value then. As we use a dedicated variable, it's
|
|
557
560
|
// OK that way.
|
|
558
|
-
*operand1 =
|
|
561
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
559
562
|
goto exit_result_ok;
|
|
560
563
|
|
|
561
564
|
exit_result_object:
|
|
@@ -693,7 +696,7 @@ exit_result_ok_clong:
|
|
|
693
696
|
|
|
694
697
|
// That's our return value then. As we use a dedicated variable, it's
|
|
695
698
|
// OK that way.
|
|
696
|
-
*operand1 =
|
|
699
|
+
*operand1 = Nuitka_PyLong_FromLong(clong_result);
|
|
697
700
|
goto exit_result_ok;
|
|
698
701
|
|
|
699
702
|
exit_result_ok:
|
|
@@ -984,7 +987,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_LONG(PyObject **operand1, PyObj
|
|
|
984
987
|
|
|
985
988
|
// That's our return value then. As we use a dedicated variable, it's
|
|
986
989
|
// OK that way.
|
|
987
|
-
*operand1 =
|
|
990
|
+
*operand1 = Nuitka_PyLong_FromLong(clong_result);
|
|
988
991
|
goto exit_result_ok;
|
|
989
992
|
|
|
990
993
|
exit_result_ok:
|
|
@@ -1280,7 +1283,7 @@ static inline bool _INPLACE_OPERATION_SUB_LONG_OBJECT(PyObject **operand1, PyObj
|
|
|
1280
1283
|
|
|
1281
1284
|
// That's our return value then. As we use a dedicated variable, it's
|
|
1282
1285
|
// OK that way.
|
|
1283
|
-
*operand1 =
|
|
1286
|
+
*operand1 = Nuitka_PyLong_FromLong(clong_result);
|
|
1284
1287
|
goto exit_result_ok;
|
|
1285
1288
|
|
|
1286
1289
|
exit_result_ok:
|
|
@@ -2241,9 +2244,10 @@ static inline bool _INPLACE_OPERATION_SUB_INT_CLONG(PyObject **operand1, long op
|
|
|
2241
2244
|
clong_result = x;
|
|
2242
2245
|
goto exit_result_ok_clong;
|
|
2243
2246
|
}
|
|
2247
|
+
|
|
2244
2248
|
{
|
|
2245
2249
|
PyObject *operand1_object = *operand1;
|
|
2246
|
-
PyObject *operand2_object =
|
|
2250
|
+
PyObject *operand2_object = Nuitka_PyLong_FromLong(operand2);
|
|
2247
2251
|
|
|
2248
2252
|
PyObject *r = PyLong_Type.tp_as_number->nb_subtract(operand1_object, operand2_object);
|
|
2249
2253
|
assert(r != Py_NotImplemented);
|
|
@@ -2261,7 +2265,7 @@ exit_result_ok_clong:
|
|
|
2261
2265
|
|
|
2262
2266
|
// That's our return value then. As we use a dedicated variable, it's
|
|
2263
2267
|
// OK that way.
|
|
2264
|
-
*operand1 =
|
|
2268
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
2265
2269
|
goto exit_result_ok;
|
|
2266
2270
|
|
|
2267
2271
|
exit_result_object:
|
|
@@ -2394,7 +2398,7 @@ exit_result_ok_clong:
|
|
|
2394
2398
|
|
|
2395
2399
|
// That's our return value then. As we use a dedicated variable, it's
|
|
2396
2400
|
// OK that way.
|
|
2397
|
-
*operand1 =
|
|
2401
|
+
*operand1 = Nuitka_PyLong_FromLong(clong_result);
|
|
2398
2402
|
goto exit_result_ok;
|
|
2399
2403
|
|
|
2400
2404
|
exit_result_ok:
|
|
@@ -2408,6 +2412,154 @@ bool INPLACE_OPERATION_SUB_LONG_DIGIT(PyObject **operand1, long operand2) {
|
|
|
2408
2412
|
return _INPLACE_OPERATION_SUB_LONG_DIGIT(operand1, operand2);
|
|
2409
2413
|
}
|
|
2410
2414
|
|
|
2415
|
+
/* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "CLONG" to C platform long value. */
|
|
2416
|
+
static inline bool _INPLACE_OPERATION_SUB_LONG_CLONG(PyObject **operand1, long operand2) {
|
|
2417
|
+
assert(operand1); // Pointer must be non-null.
|
|
2418
|
+
|
|
2419
|
+
CHECK_OBJECT(*operand1);
|
|
2420
|
+
assert(PyLong_CheckExact(*operand1));
|
|
2421
|
+
|
|
2422
|
+
// Not every code path will make use of all possible results.
|
|
2423
|
+
#ifdef _MSC_VER
|
|
2424
|
+
#pragma warning(push)
|
|
2425
|
+
#pragma warning(disable : 4101)
|
|
2426
|
+
#endif
|
|
2427
|
+
NUITKA_MAY_BE_UNUSED PyObject *obj_result;
|
|
2428
|
+
NUITKA_MAY_BE_UNUSED long clong_result;
|
|
2429
|
+
#ifdef _MSC_VER
|
|
2430
|
+
#pragma warning(pop)
|
|
2431
|
+
#endif
|
|
2432
|
+
|
|
2433
|
+
PyLongObject *operand1_long_object = (PyLongObject *)*operand1;
|
|
2434
|
+
|
|
2435
|
+
bool operand2_is_negative;
|
|
2436
|
+
unsigned long operand2_abs_ival;
|
|
2437
|
+
|
|
2438
|
+
if (operand2 < 0) {
|
|
2439
|
+
operand2_abs_ival = (unsigned long)(-1 - operand2) + 1;
|
|
2440
|
+
operand2_is_negative = true;
|
|
2441
|
+
} else {
|
|
2442
|
+
operand2_abs_ival = (unsigned long)operand2;
|
|
2443
|
+
operand2_is_negative = false;
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
Py_ssize_t operand2_digit_count = 0;
|
|
2447
|
+
digit operand2_digits[5] = {0}; // Could be more minimal and depend on sizeof(digit)
|
|
2448
|
+
{
|
|
2449
|
+
unsigned long t = operand2_abs_ival;
|
|
2450
|
+
|
|
2451
|
+
while (t != 0) {
|
|
2452
|
+
operand2_digit_count += 1;
|
|
2453
|
+
assert(operand2_digit_count <= (Py_ssize_t)(sizeof(operand2_digit_count) / sizeof(digit)));
|
|
2454
|
+
|
|
2455
|
+
operand2_digits[operand2_digit_count] = (digit)(t & PyLong_MASK);
|
|
2456
|
+
t >>= PyLong_SHIFT;
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
|
|
2460
|
+
NUITKA_MAY_BE_UNUSED Py_ssize_t operand2_size =
|
|
2461
|
+
operand2_is_negative == false ? operand2_digit_count : -operand2_digit_count;
|
|
2462
|
+
|
|
2463
|
+
if (Nuitka_LongGetDigitSize(operand1_long_object) <= 1 && operand2_digit_count <= 1) {
|
|
2464
|
+
long r = (long)(MEDIUM_VALUE(operand1_long_object) - (sdigit)operand2);
|
|
2465
|
+
|
|
2466
|
+
if (Py_REFCNT(*operand1) == 1) {
|
|
2467
|
+
Nuitka_LongUpdateFromCLong(&*operand1, r);
|
|
2468
|
+
goto exit_result_ok;
|
|
2469
|
+
} else {
|
|
2470
|
+
PyObject *obj = Nuitka_LongFromCLong(r);
|
|
2471
|
+
|
|
2472
|
+
obj_result = obj;
|
|
2473
|
+
goto exit_result_object;
|
|
2474
|
+
}
|
|
2475
|
+
clong_result = r;
|
|
2476
|
+
goto exit_result_ok_clong;
|
|
2477
|
+
}
|
|
2478
|
+
|
|
2479
|
+
if (Py_REFCNT(*operand1) == 1) {
|
|
2480
|
+
digit const *b_digits = operand2_digits;
|
|
2481
|
+
Py_ssize_t b_digit_count = operand2_digit_count;
|
|
2482
|
+
|
|
2483
|
+
bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
|
|
2484
|
+
bool b_negative = operand2_is_negative;
|
|
2485
|
+
|
|
2486
|
+
if (a_negative) {
|
|
2487
|
+
if (b_negative) {
|
|
2488
|
+
*operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, -1);
|
|
2489
|
+
} else {
|
|
2490
|
+
*operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
|
|
2491
|
+
Nuitka_LongSetSignNegative(*operand1);
|
|
2492
|
+
}
|
|
2493
|
+
} else {
|
|
2494
|
+
if (b_negative) {
|
|
2495
|
+
*operand1 = _Nuitka_LongAddInplaceDigits(*operand1, b_digits, b_digit_count);
|
|
2496
|
+
} else {
|
|
2497
|
+
*operand1 = _Nuitka_LongSubInplaceDigits(*operand1, b_digits, b_digit_count, 1);
|
|
2498
|
+
}
|
|
2499
|
+
}
|
|
2500
|
+
|
|
2501
|
+
goto exit_result_ok;
|
|
2502
|
+
}
|
|
2503
|
+
{
|
|
2504
|
+
PyLongObject *z;
|
|
2505
|
+
|
|
2506
|
+
digit const *a_digits = Nuitka_LongGetDigitPointer(operand1_long_object);
|
|
2507
|
+
Py_ssize_t a_digit_count = Nuitka_LongGetDigitSize(operand1_long_object);
|
|
2508
|
+
bool a_negative = Nuitka_LongIsNegative(operand1_long_object);
|
|
2509
|
+
digit const *b_digits = operand2_digits;
|
|
2510
|
+
Py_ssize_t b_digit_count = operand2_digit_count;
|
|
2511
|
+
bool b_negative = operand2_is_negative;
|
|
2512
|
+
|
|
2513
|
+
if (a_negative) {
|
|
2514
|
+
if (b_negative) {
|
|
2515
|
+
z = _Nuitka_LongSubDigits(a_digits, a_digit_count, b_digits, b_digit_count);
|
|
2516
|
+
} else {
|
|
2517
|
+
z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
Nuitka_LongFlipSign(z);
|
|
2521
|
+
} else {
|
|
2522
|
+
if (b_negative) {
|
|
2523
|
+
z = _Nuitka_LongAddDigits(a_digits, a_digit_count, b_digits, b_digit_count);
|
|
2524
|
+
} else {
|
|
2525
|
+
z = _Nuitka_LongSubDigits(a_digits, a_digit_count, b_digits, b_digit_count);
|
|
2526
|
+
}
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
obj_result = (PyObject *)z;
|
|
2530
|
+
goto exit_result_object;
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
exit_result_object:
|
|
2534
|
+
if (unlikely(obj_result == NULL)) {
|
|
2535
|
+
goto exit_result_exception;
|
|
2536
|
+
}
|
|
2537
|
+
// We got an object handed, that we have to release.
|
|
2538
|
+
Py_DECREF(*operand1);
|
|
2539
|
+
*operand1 = obj_result;
|
|
2540
|
+
goto exit_result_ok;
|
|
2541
|
+
|
|
2542
|
+
exit_result_ok_clong:
|
|
2543
|
+
|
|
2544
|
+
// We got an object handed, that we have to release.
|
|
2545
|
+
Py_DECREF(*operand1);
|
|
2546
|
+
|
|
2547
|
+
// That's our return value then. As we use a dedicated variable, it's
|
|
2548
|
+
// OK that way.
|
|
2549
|
+
*operand1 = Nuitka_PyLong_FromLong(clong_result);
|
|
2550
|
+
goto exit_result_ok;
|
|
2551
|
+
|
|
2552
|
+
exit_result_ok:
|
|
2553
|
+
return true;
|
|
2554
|
+
|
|
2555
|
+
exit_result_exception:
|
|
2556
|
+
return false;
|
|
2557
|
+
}
|
|
2558
|
+
|
|
2559
|
+
bool INPLACE_OPERATION_SUB_LONG_CLONG(PyObject **operand1, long operand2) {
|
|
2560
|
+
return _INPLACE_OPERATION_SUB_LONG_CLONG(operand1, operand2);
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2411
2563
|
/* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */
|
|
2412
2564
|
static inline bool _INPLACE_OPERATION_SUB_FLOAT_CFLOAT(PyObject **operand1, double operand2) {
|
|
2413
2565
|
assert(operand1); // Pointer must be non-null.
|
|
@@ -2494,6 +2646,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
|
|
|
2494
2646
|
clong_result = x;
|
|
2495
2647
|
goto exit_result_ok_clong;
|
|
2496
2648
|
}
|
|
2649
|
+
|
|
2497
2650
|
{
|
|
2498
2651
|
PyObject *operand1_object = *operand1;
|
|
2499
2652
|
PyObject *operand2_object = operand2;
|
|
@@ -2512,7 +2665,7 @@ static inline bool _INPLACE_OPERATION_SUB_OBJECT_OBJECT(PyObject **operand1, PyO
|
|
|
2512
2665
|
|
|
2513
2666
|
// That's our return value then. As we use a dedicated variable, it's
|
|
2514
2667
|
// OK that way.
|
|
2515
|
-
*operand1 =
|
|
2668
|
+
*operand1 = Nuitka_PyInt_FromLong(clong_result);
|
|
2516
2669
|
goto exit_result_ok;
|
|
2517
2670
|
|
|
2518
2671
|
exit_result_object:
|
|
@@ -68,6 +68,7 @@ static inline bool _INPLACE_OPERATION_TRUEDIV_INT_INT(PyObject **operand1, PyObj
|
|
|
68
68
|
cfloat_result = r;
|
|
69
69
|
goto exit_result_ok_cfloat;
|
|
70
70
|
}
|
|
71
|
+
|
|
71
72
|
{
|
|
72
73
|
PyObject *operand1_object = *operand1;
|
|
73
74
|
PyObject *operand2_object = operand2;
|
|
@@ -346,6 +347,7 @@ static inline bool _INPLACE_OPERATION_TRUEDIV_OBJECT_INT(PyObject **operand1, Py
|
|
|
346
347
|
cfloat_result = r;
|
|
347
348
|
goto exit_result_ok_cfloat;
|
|
348
349
|
}
|
|
350
|
+
|
|
349
351
|
{
|
|
350
352
|
PyObject *operand1_object = *operand1;
|
|
351
353
|
PyObject *operand2_object = operand2;
|
|
@@ -628,6 +630,7 @@ static inline bool _INPLACE_OPERATION_TRUEDIV_INT_OBJECT(PyObject **operand1, Py
|
|
|
628
630
|
cfloat_result = r;
|
|
629
631
|
goto exit_result_ok_cfloat;
|
|
630
632
|
}
|
|
633
|
+
|
|
631
634
|
{
|
|
632
635
|
PyObject *operand1_object = *operand1;
|
|
633
636
|
PyObject *operand2_object = operand2;
|
|
@@ -2170,9 +2173,10 @@ static inline bool _INPLACE_OPERATION_TRUEDIV_INT_CLONG(PyObject **operand1, lon
|
|
|
2170
2173
|
cfloat_result = r;
|
|
2171
2174
|
goto exit_result_ok_cfloat;
|
|
2172
2175
|
}
|
|
2176
|
+
|
|
2173
2177
|
{
|
|
2174
2178
|
PyObject *operand1_object = *operand1;
|
|
2175
|
-
PyObject *operand2_object =
|
|
2179
|
+
PyObject *operand2_object = Nuitka_PyLong_FromLong(operand2);
|
|
2176
2180
|
|
|
2177
2181
|
PyObject *r = PyLong_Type.tp_as_number->nb_true_divide(operand1_object, operand2_object);
|
|
2178
2182
|
assert(r != Py_NotImplemented);
|
|
@@ -2347,6 +2351,7 @@ static inline bool _INPLACE_OPERATION_TRUEDIV_OBJECT_OBJECT(PyObject **operand1,
|
|
|
2347
2351
|
cfloat_result = r;
|
|
2348
2352
|
goto exit_result_ok_cfloat;
|
|
2349
2353
|
}
|
|
2354
|
+
|
|
2350
2355
|
{
|
|
2351
2356
|
PyObject *operand1_object = *operand1;
|
|
2352
2357
|
PyObject *operand2_object = operand2;
|
|
@@ -47,7 +47,7 @@ void startProfiling(void) {
|
|
|
47
47
|
PyThreadState *tstate = PyThreadState_GET();
|
|
48
48
|
|
|
49
49
|
PyObject *result = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, PyObject_GetAttrString(vmprof_module, "enable"),
|
|
50
|
-
|
|
50
|
+
Nuitka_PyInt_FromLong(fileno(tempfile_profile)));
|
|
51
51
|
|
|
52
52
|
if (result == NULL) {
|
|
53
53
|
PyErr_Print();
|