Construct CallCompiledClassCreationPosArgsConstant6

Performance Diagrams

Construct CallCompiledClassCreationPosArgsConstant6 00100000000100000000200000000200000000300000000300000000400000000400000000500000000500000000600000000600000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)65176011388.11538461538461257.0CPython 2.7487075784240.03846153846155319.4401992224424Nuitka (master)380472152391.96153846153845359.8590542545804Nuitka (develop)380472152543.8846153846154359.8590542545804Nuitka (factory)Construct CallCompiledClassCreationPosArgsConstant6Ticks Construct CallCompiledClassCreationPosArgsConstant6 00100000000100000000200000000200000000300000000300000000400000000400000000500000000500000000600000000600000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)67999387588.11538461538461257.0CPython 3.8507431473240.03846153846155319.7106006511965Nuitka (master)425980096391.96153846153845349.31070308565984Nuitka (develop)425980096543.8846153846154349.31070308565984Nuitka (factory)Construct CallCompiledClassCreationPosArgsConstant6Ticks

Source Code with Construct

from __future__ import print_function

class C(object):
    def __init__(self, a,b,c,d,e,f):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f

def calledRepeatedly():
    # force frame
    C

    # This is supposed to make a call to a compiled method, which is
    # being optimized separately.
# construct_begin
    C("some", "random", "values", "to", "check", "call")
    C("some", "other", "values", "to", "check", "call")
    C("some", "new", "values", "to", "check", "call")

# construct_alternative



import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Source Code without Construct

from __future__ import print_function

class C(object):
    def __init__(self, a,b,c,d,e,f):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f

def calledRepeatedly():
    # force frame
    C

    # This is supposed to make a call to a compiled method, which is
    # being optimized separately.
# construct_begin




# construct_alternative
    pass
# construct_end

import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
33     C 33     C
34 34
35     # This is supposed to make a call to a compiled method, which is 35     # This is supposed to make a call to a compiled method, which is
36     # being optimized separately. 36     # being optimized separately.
37 # construct_begin 37 # construct_begin
n 38     C("some", "random", "values", "to", "check", "call") n 38  
39     C("some", "other", "values", "to", "check", "call") 39  
40     C("some", "new", "values", "to", "check", "call") 40  
41 41
42 # construct_alternative 42 # construct_alternative
t 43   t 43     pass
44   44 # construct_end
45 45
46 import itertools 46 import itertools
47 for x in itertools.repeat(None, 50000): 47 for x in itertools.repeat(None, 50000):
48     calledRepeatedly() 48     calledRepeatedly()
49 49

Context Diff of Generated Code


Construct
Baseline
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *mod_consts[42]; n 36 static PyObject *mod_consts[39];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[42]; n 38 static Py_hash_t mod_consts_hash[39];
39 #endif 39 #endif
40 40
41 static PyObject *module_filename_obj = NULL; 41 static PyObject *module_filename_obj = NULL;
42 42
43 /* Indicator if this modules private constants were created yet. */ 43 /* Indicator if this modules private constants were created yet. */
48     if (constants_created == false) { 48     if (constants_created == false) {
49         loadConstantsBlob(&mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(&mod_consts[0], UNTRANSLATE("__main__"));
50         constants_created = true; 50         constants_created = true;
51 51
52 #ifndef __NUITKA_NO_ASSERT__ 52 #ifndef __NUITKA_NO_ASSERT__
n 53         for(int i = 0; i < 42; i++) { n 53         for(int i = 0; i < 39; i++) {
54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]);
55         } 55         }
56 #endif 56 #endif
57     } 57     }
58 } 58 }
68 #ifndef __NUITKA_NO_ASSERT__ 68 #ifndef __NUITKA_NO_ASSERT__
69 void checkModuleConstants___main__(void) { 69 void checkModuleConstants___main__(void) {
70     // The module may not have been used at all, then ignore this. 70     // The module may not have been used at all, then ignore this.
71     if (constants_created == false) return; 71     if (constants_created == false) return;
72 72
n 73     for(int i = 0; i < 42; i++) { n 73     for(int i = 0; i < 39; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i]));
75         CHECK_OBJECT_DEEP(mod_consts[i]); 75         CHECK_OBJECT_DEEP(mod_consts[i]);
76     } 76     }
77 } 77 }
78 #endif 78 #endif
84 static PyCodeObject *codeobj_94789b072b773a80a3ccd79631f9486d; 84 static PyCodeObject *codeobj_94789b072b773a80a3ccd79631f9486d;
85 /* For use in "MainProgram.c". */ 85 /* For use in "MainProgram.c". */
86 PyCodeObject *codeobj_main = NULL; 86 PyCodeObject *codeobj_main = NULL;
87 87
88 static void createModuleCodeObjects(void) { 88 static void createModuleCodeObjects(void) {
n 89     module_filename_obj = mod_consts[13]; CHECK_OBJECT(module_filename_obj); n 89     module_filename_obj = mod_consts[10]; CHECK_OBJECT(module_filename_obj);
90     codeobj_0863d618b682e284c553a6031463dd3c = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[39], NULL, NULL, 0, 0, 0); 90     codeobj_0863d618b682e284c553a6031463dd3c = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[36], NULL, NULL, 0, 0, 0);
91     codeobj_4395c5ba9f720674613b1ed39cc5b5b3 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[8], mod_consts[40], NULL, 0, 0, 0); 91     codeobj_4395c5ba9f720674613b1ed39cc5b5b3 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[8], mod_consts[37], NULL, 0, 0, 0);
92     codeobj_8d08ac4a05eae06f4eb5a0b7957a55ac = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[29], mod_consts[41], NULL, 7, 0, 0); 92     codeobj_8d08ac4a05eae06f4eb5a0b7957a55ac = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[26], mod_consts[38], NULL, 7, 0, 0);
93     codeobj_94789b072b773a80a3ccd79631f9486d = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0); 93     codeobj_94789b072b773a80a3ccd79631f9486d = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[29], NULL, NULL, 0, 0, 0);
94 } 94 }
95 95
96 // The module function declarations. 96 // The module function declarations.
97 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars); 97 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars);
98 98
744             exception_lineno = 33; 744             exception_lineno = 33;
745 745
746             goto frame_exception_exit_1; 746             goto frame_exception_exit_1;
747         } 747         }
748     } 748     }
n 749     { n
750         PyObject *tmp_called_name_1;
751         PyObject *tmp_call_result_1;
752         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
753  
754         if (unlikely(tmp_called_name_1 == NULL)) {
755             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
756         }
757  
758         if (tmp_called_name_1 == NULL) {
759             assert(ERROR_OCCURRED());
760  
761             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
762  
763  
764             exception_lineno = 38;
765  
766             goto frame_exception_exit_1;
767         }
768         frame_94789b072b773a80a3ccd79631f9486d->m_frame.f_lineno = 38;
769         tmp_call_result_1 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_1, mod_consts[9]);
770  
771         if (tmp_call_result_1 == NULL) {
772             assert(ERROR_OCCURRED());
773  
774             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
775  
776  
777             exception_lineno = 38;
778  
779             goto frame_exception_exit_1;
780         }
781         Py_DECREF(tmp_call_result_1);
782     }
783     {
784         PyObject *tmp_called_name_2;
785         PyObject *tmp_call_result_2;
786         tmp_called_name_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
787  
788         if (unlikely(tmp_called_name_2 == NULL)) {
789             tmp_called_name_2 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
790         }
791  
792         if (tmp_called_name_2 == NULL) {
793             assert(ERROR_OCCURRED());
794  
795             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
796  
797  
798             exception_lineno = 39;
799  
800             goto frame_exception_exit_1;
801         }
802         frame_94789b072b773a80a3ccd79631f9486d->m_frame.f_lineno = 39;
803         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_2, mod_consts[10]);
804  
805         if (tmp_call_result_2 == NULL) {
806             assert(ERROR_OCCURRED());
807  
808             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
809  
810  
811             exception_lineno = 39;
812  
813             goto frame_exception_exit_1;
814         }
815         Py_DECREF(tmp_call_result_2);
816     }
817     {
818         PyObject *tmp_called_name_3;
819         PyObject *tmp_call_result_3;
820         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
821  
822         if (unlikely(tmp_called_name_3 == NULL)) {
823             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
824         }
825  
826         if (tmp_called_name_3 == NULL) {
827             assert(ERROR_OCCURRED());
828  
829             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
830  
831  
832             exception_lineno = 40;
833  
834             goto frame_exception_exit_1;
835         }
836         frame_94789b072b773a80a3ccd79631f9486d->m_frame.f_lineno = 40;
837         tmp_call_result_3 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_3, mod_consts[11]);
838  
839         if (tmp_call_result_3 == NULL) {
840             assert(ERROR_OCCURRED());
841  
842             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
843  
844  
845             exception_lineno = 40;
846  
847             goto frame_exception_exit_1;
848         }
849         Py_DECREF(tmp_call_result_3);
850     }
851 749
852 #if 0 750 #if 0
853     RESTORE_FRAME_EXCEPTION(frame_94789b072b773a80a3ccd79631f9486d); 751     RESTORE_FRAME_EXCEPTION(frame_94789b072b773a80a3ccd79631f9486d);
854 #endif 752 #endif
855 753
924 822
925 823
926 static PyObject *MAKE_FUNCTION___main__$$$function__1___init__() { 824 static PyObject *MAKE_FUNCTION___main__$$$function__1___init__() {
927     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 825     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
928         impl___main__$$$function__1___init__, 826         impl___main__$$$function__1___init__,
n 929         mod_consts[29], n 827         mod_consts[26],
930 #if PYTHON_VERSION >= 0x300 828 #if PYTHON_VERSION >= 0x300
n 931         mod_consts[30], n 829         mod_consts[27],
932 #endif 830 #endif
933         codeobj_8d08ac4a05eae06f4eb5a0b7957a55ac, 831         codeobj_8d08ac4a05eae06f4eb5a0b7957a55ac,
934         NULL, 832         NULL,
935 #if PYTHON_VERSION >= 0x300 833 #if PYTHON_VERSION >= 0x300
936         NULL, 834         NULL,
949 847
950 848
951 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() { 849 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() {
952     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 850     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
953         impl___main__$$$function__2_calledRepeatedly, 851         impl___main__$$$function__2_calledRepeatedly,
n 954         mod_consts[32], n 852         mod_consts[29],
955 #if PYTHON_VERSION >= 0x300 853 #if PYTHON_VERSION >= 0x300
956         NULL, 854         NULL,
957 #endif 855 #endif
958         codeobj_94789b072b773a80a3ccd79631f9486d, 856         codeobj_94789b072b773a80a3ccd79631f9486d,
959         NULL, 857         NULL,
1356 1254
1357     // Module code. 1255     // Module code.
1358     { 1256     {
1359         PyObject *tmp_assign_source_1; 1257         PyObject *tmp_assign_source_1;
1360         tmp_assign_source_1 = Py_None; 1258         tmp_assign_source_1 = Py_None;
n 1361         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_1); n 1259         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_1);
1362     } 1260     }
1363     { 1261     {
1364         PyObject *tmp_assign_source_2; 1262         PyObject *tmp_assign_source_2;
n 1365         tmp_assign_source_2 = mod_consts[13]; n 1263         tmp_assign_source_2 = mod_consts[10];
1366         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_2); 1264         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_2);
1367     } 1265     }
1368     { 1266     {
1369         PyObject *tmp_assign_source_3; 1267         PyObject *tmp_assign_source_3;
1370         tmp_assign_source_3 = Py_None; 1268         tmp_assign_source_3 = Py_None;
n 1371         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_3); n 1269         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_3);
1372     } 1270     }
1373     { 1271     {
1374         PyObject *tmp_assign_source_4; 1272         PyObject *tmp_assign_source_4;
1375         tmp_assign_source_4 = PyDict_New(); 1273         tmp_assign_source_4 = PyDict_New();
n 1376         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[16], tmp_assign_source_4); n 1274         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_4);
1377     } 1275     }
1378     { 1276     {
1379         PyObject *tmp_assign_source_5; 1277         PyObject *tmp_assign_source_5;
1380         { 1278         {
1381             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1279             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1382             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[17]); n 1280             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[14]);
1383         } 1281         }
1384 1282
1385         assert(!(tmp_assign_source_5 == NULL)); 1283         assert(!(tmp_assign_source_5 == NULL));
n 1386         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[17], tmp_assign_source_5); n 1284         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_5);
1387     } 1285     }
1388     // Frame without reuse. 1286     // Frame without reuse.
1389     frame_0863d618b682e284c553a6031463dd3c = MAKE_MODULE_FRAME(codeobj_0863d618b682e284c553a6031463dd3c, module___main__); 1287     frame_0863d618b682e284c553a6031463dd3c = MAKE_MODULE_FRAME(codeobj_0863d618b682e284c553a6031463dd3c, module___main__);
1390 1288
1391     // Push the new frame as the currently active one, and we should be exclusively 1289     // Push the new frame as the currently active one, and we should be exclusively
1396     // Framed code: 1294     // Framed code:
1397     // Tried code: 1295     // Tried code:
1398     { 1296     {
1399         PyObject *tmp_assign_source_6; 1297         PyObject *tmp_assign_source_6;
1400         PyObject *tmp_dircall_arg1_1; 1298         PyObject *tmp_dircall_arg1_1;
n 1401         tmp_dircall_arg1_1 = mod_consts[18]; n 1299         tmp_dircall_arg1_1 = mod_consts[15];
1402         Py_INCREF(tmp_dircall_arg1_1); 1300         Py_INCREF(tmp_dircall_arg1_1);
1403 1301
1404         { 1302         {
1405             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1303             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1406             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1304             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1436         int tmp_truth_name_1; 1334         int tmp_truth_name_1;
1437         PyObject *tmp_type_arg_1; 1335         PyObject *tmp_type_arg_1;
1438         PyObject *tmp_expression_name_1; 1336         PyObject *tmp_expression_name_1;
1439         PyObject *tmp_subscript_name_1; 1337         PyObject *tmp_subscript_name_1;
1440         PyObject *tmp_bases_name_1; 1338         PyObject *tmp_bases_name_1;
n 1441         tmp_key_name_1 = mod_consts[19]; n 1339         tmp_key_name_1 = mod_consts[16];
1442         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1340         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1443         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1341         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1444         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1342         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1445         assert(!(tmp_res == -1)); 1343         assert(!(tmp_res == -1));
1446         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1344         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1450             goto condexpr_false_1; 1348             goto condexpr_false_1;
1451         } 1349         }
1452         condexpr_true_1:; 1350         condexpr_true_1:;
1453         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1351         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1454         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1352         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1455         tmp_key_name_2 = mod_consts[19]; n 1353         tmp_key_name_2 = mod_consts[16];
1456         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2); 1354         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2);
1457         if (tmp_metaclass_name_1 == NULL) { 1355         if (tmp_metaclass_name_1 == NULL) {
1458             assert(ERROR_OCCURRED()); 1356             assert(ERROR_OCCURRED());
1459 1357
1460             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1358             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1485             goto condexpr_false_2; 1383             goto condexpr_false_2;
1486         } 1384         }
1487         condexpr_true_2:; 1385         condexpr_true_2:;
1488         CHECK_OBJECT(tmp_class_creation_1__bases); 1386         CHECK_OBJECT(tmp_class_creation_1__bases);
1489         tmp_expression_name_1 = tmp_class_creation_1__bases; 1387         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1490         tmp_subscript_name_1 = mod_consts[20]; n 1388         tmp_subscript_name_1 = mod_consts[17];
1491         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1389         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1492         if (tmp_type_arg_1 == NULL) { 1390         if (tmp_type_arg_1 == NULL) {
1493             assert(ERROR_OCCURRED()); 1391             assert(ERROR_OCCURRED());
1494 1392
1495             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1393             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1536     } 1434     }
1537     { 1435     {
1538         nuitka_bool tmp_condition_result_3; 1436         nuitka_bool tmp_condition_result_3;
1539         PyObject *tmp_key_name_3; 1437         PyObject *tmp_key_name_3;
1540         PyObject *tmp_dict_arg_name_3; 1438         PyObject *tmp_dict_arg_name_3;
n 1541         tmp_key_name_3 = mod_consts[19]; n 1439         tmp_key_name_3 = mod_consts[16];
1542         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1440         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1543         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1441         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1544         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1442         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1545         assert(!(tmp_res == -1)); 1443         assert(!(tmp_res == -1));
1546         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1444         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1551         } 1449         }
1552     } 1450     }
1553     branch_yes_1:; 1451     branch_yes_1:;
1554     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1452     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1555     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1453     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1556     tmp_dictdel_key = mod_consts[19]; n 1454     tmp_dictdel_key = mod_consts[16];
1557     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1455     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1558     if (tmp_result == false) { 1456     if (tmp_result == false) {
1559         assert(ERROR_OCCURRED()); 1457         assert(ERROR_OCCURRED());
1560 1458
1561         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1459         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1569     { 1467     {
1570         nuitka_bool tmp_condition_result_4; 1468         nuitka_bool tmp_condition_result_4;
1571         PyObject *tmp_expression_name_2; 1469         PyObject *tmp_expression_name_2;
1572         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1470         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1573         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1471         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1574         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[21]); n 1472         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[18]);
1575         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1473         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1576         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1474         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1577             goto branch_yes_2; 1475             goto branch_yes_2;
1578         } else { 1476         } else {
1579             goto branch_no_2; 1477             goto branch_no_2;
1587         PyObject *tmp_args_name_1; 1485         PyObject *tmp_args_name_1;
1588         PyObject *tmp_tuple_element_1; 1486         PyObject *tmp_tuple_element_1;
1589         PyObject *tmp_kwargs_name_1; 1487         PyObject *tmp_kwargs_name_1;
1590         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1488         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1591         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1489         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1592         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[21]); n 1490         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[18]);
1593         if (tmp_called_name_1 == NULL) { 1491         if (tmp_called_name_1 == NULL) {
1594             assert(ERROR_OCCURRED()); 1492             assert(ERROR_OCCURRED());
1595 1493
1596             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1494             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1597 1495
1629         nuitka_bool tmp_condition_result_5; 1527         nuitka_bool tmp_condition_result_5;
1630         PyObject *tmp_operand_name_1; 1528         PyObject *tmp_operand_name_1;
1631         PyObject *tmp_expression_name_4; 1529         PyObject *tmp_expression_name_4;
1632         CHECK_OBJECT(tmp_class_creation_1__prepared); 1530         CHECK_OBJECT(tmp_class_creation_1__prepared);
1633         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1531         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1634         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[22]); n 1532         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[19]);
1635         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1533         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1636         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1534         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1637         if (tmp_res == -1) { 1535         if (tmp_res == -1) {
1638             assert(ERROR_OCCURRED()); 1536             assert(ERROR_OCCURRED());
1639 1537
1660         PyObject *tmp_tuple_element_2; 1558         PyObject *tmp_tuple_element_2;
1661         PyObject *tmp_getattr_target_1; 1559         PyObject *tmp_getattr_target_1;
1662         PyObject *tmp_getattr_attr_1; 1560         PyObject *tmp_getattr_attr_1;
1663         PyObject *tmp_getattr_default_1; 1561         PyObject *tmp_getattr_default_1;
1664         tmp_raise_type_1 = PyExc_TypeError; 1562         tmp_raise_type_1 = PyExc_TypeError;
n 1665         tmp_left_name_1 = mod_consts[23]; n 1563         tmp_left_name_1 = mod_consts[20];
1666         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1564         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1667         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1565         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1668         tmp_getattr_attr_1 = mod_consts[24]; n 1566         tmp_getattr_attr_1 = mod_consts[21];
1669         tmp_getattr_default_1 = mod_consts[25]; 1567         tmp_getattr_default_1 = mod_consts[22];
1670         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1568         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1671         if (tmp_tuple_element_2 == NULL) { 1569         if (tmp_tuple_element_2 == NULL) {
1672             assert(ERROR_OCCURRED()); 1570             assert(ERROR_OCCURRED());
1673 1571
1674             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1572             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1685             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1583             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1686             CHECK_OBJECT(tmp_class_creation_1__prepared); 1584             CHECK_OBJECT(tmp_class_creation_1__prepared);
1687             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1585             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1688             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1586             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1689             assert(!(tmp_expression_name_5 == NULL)); 1587             assert(!(tmp_expression_name_5 == NULL));
n 1690             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[24]); n 1588             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[21]);
1691             Py_DECREF(tmp_expression_name_5); 1589             Py_DECREF(tmp_expression_name_5);
1692             if (tmp_tuple_element_2 == NULL) { 1590             if (tmp_tuple_element_2 == NULL) {
1693                 assert(ERROR_OCCURRED()); 1591                 assert(ERROR_OCCURRED());
1694 1592
1695                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1593                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1747             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1645             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1748             Py_INCREF(tmp_set_locals_1); 1646             Py_INCREF(tmp_set_locals_1);
1749         } 1647         }
1750         // Tried code: 1648         // Tried code:
1751         // Tried code: 1649         // Tried code:
n 1752         tmp_dictset_value = mod_consts[26]; n 1650         tmp_dictset_value = mod_consts[23];
1753         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[27], tmp_dictset_value); 1651         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[24], tmp_dictset_value);
1754         if (tmp_res != 0) { 1652         if (tmp_res != 0) {
1755             assert(ERROR_OCCURRED()); 1653             assert(ERROR_OCCURRED());
1756 1654
1757             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1655             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1758 1656
1760             exception_lineno = 22; 1658             exception_lineno = 22;
1761 1659
1762             goto try_except_handler_3; 1660             goto try_except_handler_3;
1763         } 1661         }
1764         tmp_dictset_value = mod_consts[8]; 1662         tmp_dictset_value = mod_consts[8];
n 1765         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[28], tmp_dictset_value); n 1663         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[25], tmp_dictset_value);
1766         if (tmp_res != 0) { 1664         if (tmp_res != 0) {
1767             assert(ERROR_OCCURRED()); 1665             assert(ERROR_OCCURRED());
1768 1666
1769             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1667             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1770 1668
1802         // Framed code: 1700         // Framed code:
1803 1701
1804 1702
1805         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1___init__(); 1703         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1___init__();
1806 1704
n 1807         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[29], tmp_dictset_value); n 1705         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[26], tmp_dictset_value);
1808         Py_DECREF(tmp_dictset_value); 1706         Py_DECREF(tmp_dictset_value);
1809         if (tmp_res != 0) { 1707         if (tmp_res != 0) {
1810             assert(ERROR_OCCURRED()); 1708             assert(ERROR_OCCURRED());
1811 1709
1812             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1710             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1875             nuitka_bool tmp_condition_result_6; 1773             nuitka_bool tmp_condition_result_6;
1876             PyObject *tmp_compexpr_left_1; 1774             PyObject *tmp_compexpr_left_1;
1877             PyObject *tmp_compexpr_right_1; 1775             PyObject *tmp_compexpr_right_1;
1878             CHECK_OBJECT(tmp_class_creation_1__bases); 1776             CHECK_OBJECT(tmp_class_creation_1__bases);
1879             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1777             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1880             tmp_compexpr_right_1 = mod_consts[18]; n 1778             tmp_compexpr_right_1 = mod_consts[15];
1881             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1779             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1882             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1780             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1883                 assert(ERROR_OCCURRED()); 1781                 assert(ERROR_OCCURRED());
1884 1782
1885                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1783                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1895                 goto branch_no_4; 1793                 goto branch_no_4;
1896             } 1794             }
1897             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1795             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1898         } 1796         }
1899         branch_yes_4:; 1797         branch_yes_4:;
n 1900         tmp_dictset_value = mod_consts[18]; n 1798         tmp_dictset_value = mod_consts[15];
1901         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[31], tmp_dictset_value); 1799         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[28], tmp_dictset_value);
1902         if (tmp_res != 0) { 1800         if (tmp_res != 0) {
1903             assert(ERROR_OCCURRED()); 1801             assert(ERROR_OCCURRED());
1904 1802
1905             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1803             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1906 1804
2053         PyObject *tmp_assign_source_13; 1951         PyObject *tmp_assign_source_13;
2054 1952
2055 1953
2056         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly(); 1954         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly();
2057 1955
n 2058         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[32], tmp_assign_source_13); n 1956         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[29], tmp_assign_source_13);
2059     } 1957     }
2060     { 1958     {
2061         PyObject *tmp_assign_source_14; 1959         PyObject *tmp_assign_source_14;
2062         PyObject *tmp_name_name_1; 1960         PyObject *tmp_name_name_1;
2063         PyObject *tmp_globals_arg_name_1; 1961         PyObject *tmp_globals_arg_name_1;
2064         PyObject *tmp_locals_arg_name_1; 1962         PyObject *tmp_locals_arg_name_1;
2065         PyObject *tmp_fromlist_name_1; 1963         PyObject *tmp_fromlist_name_1;
2066         PyObject *tmp_level_name_1; 1964         PyObject *tmp_level_name_1;
n 2067         tmp_name_name_1 = mod_consts[33]; n 1965         tmp_name_name_1 = mod_consts[30];
2068         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1966         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
2069         tmp_locals_arg_name_1 = Py_None; 1967         tmp_locals_arg_name_1 = Py_None;
2070         tmp_fromlist_name_1 = Py_None; 1968         tmp_fromlist_name_1 = Py_None;
n 2071         tmp_level_name_1 = mod_consts[20]; n 1969         tmp_level_name_1 = mod_consts[17];
2072         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 46; 1970         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 46;
2073         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1); 1971         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1);
2074         assert(!(tmp_assign_source_14 == NULL)); 1972         assert(!(tmp_assign_source_14 == NULL));
n 2075         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[33], tmp_assign_source_14); n 1973         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[30], tmp_assign_source_14);
2076     } 1974     }
2077     { 1975     {
2078         PyObject *tmp_assign_source_15; 1976         PyObject *tmp_assign_source_15;
2079         PyObject *tmp_iter_arg_1; 1977         PyObject *tmp_iter_arg_1;
2080         PyObject *tmp_called_instance_1; 1978         PyObject *tmp_called_instance_1;
n 2081         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[33]); n 1979         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[30]);
2082 1980
2083         if (unlikely(tmp_called_instance_1 == NULL)) { 1981         if (unlikely(tmp_called_instance_1 == NULL)) {
n 2084             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[33]); n 1982             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[30]);
2085         } 1983         }
2086 1984
2087         assert(!(tmp_called_instance_1 == NULL)); 1985         assert(!(tmp_called_instance_1 == NULL));
2088         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 47; 1986         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 47;
2089         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1987         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
2090             tmp_called_instance_1, 1988             tmp_called_instance_1,
n 2091             mod_consts[34], n 1989             mod_consts[31],
2092             &PyTuple_GET_ITEM(mod_consts[35], 0) 1990             &PyTuple_GET_ITEM(mod_consts[32], 0)
2093         ); 1991         );
2094 1992
2095         if (tmp_iter_arg_1 == NULL) { 1993         if (tmp_iter_arg_1 == NULL) {
2096             assert(ERROR_OCCURRED()); 1994             assert(ERROR_OCCURRED());
2097 1995
2147     } 2045     }
2148     { 2046     {
2149         PyObject *tmp_assign_source_17; 2047         PyObject *tmp_assign_source_17;
2150         CHECK_OBJECT(tmp_for_loop_1__iter_value); 2048         CHECK_OBJECT(tmp_for_loop_1__iter_value);
2151         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 2049         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 2152         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[36], tmp_assign_source_17); n 2050         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[33], tmp_assign_source_17);
2153     } 2051     }
2154     { 2052     {
2155         PyObject *tmp_called_name_3; 2053         PyObject *tmp_called_name_3;
2156         PyObject *tmp_call_result_1; 2054         PyObject *tmp_call_result_1;
n 2157         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[32]); n 2055         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[29]);
2158 2056
2159         if (unlikely(tmp_called_name_3 == NULL)) { 2057         if (unlikely(tmp_called_name_3 == NULL)) {
n 2160             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[32]); n 2058             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[29]);
2161         } 2059         }
2162 2060
2163         if (tmp_called_name_3 == NULL) { 2061         if (tmp_called_name_3 == NULL) {
2164             assert(ERROR_OCCURRED()); 2062             assert(ERROR_OCCURRED());
2165 2063
2228     Py_DECREF(tmp_for_loop_1__for_iterator); 2126     Py_DECREF(tmp_for_loop_1__for_iterator);
2229     tmp_for_loop_1__for_iterator = NULL; 2127     tmp_for_loop_1__for_iterator = NULL;
2230     { 2128     {
2231         PyObject *tmp_called_name_4; 2129         PyObject *tmp_called_name_4;
2232         PyObject *tmp_call_result_2; 2130         PyObject *tmp_call_result_2;
n 2233         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[37]); n 2131         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[34]);
2234         assert(tmp_called_name_4 != NULL); 2132         assert(tmp_called_name_4 != NULL);
2235         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 50; 2133         frame_0863d618b682e284c553a6031463dd3c->m_frame.f_lineno = 50;
t 2236         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[38]); t 2134         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[35]);
2237 2135
2238         if (tmp_call_result_2 == NULL) { 2136         if (tmp_call_result_2 == NULL) {
2239             assert(ERROR_OCCURRED()); 2137             assert(ERROR_OCCURRED());
2240 2138
2241             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 2139             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);