Construct CallCompiledClassCreationPosArgsConstant6

Performance Diagrams

Construct CallCompiledClassCreationPosArgsConstant6 00100000000100000000200000000200000000300000000300000000400000000400000000500000000500000000600000000600000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)65176011388.11538461538461257.0CPython 2.7380474680240.03846153846155359.8580957612946Nuitka (master)380472152391.96153846153845359.8590542545804Nuitka (develop)406720608543.8846153846154349.90693050441166Nuitka (factory)Construct CallCompiledClassCreationPosArgsConstant6Ticks Construct CallCompiledClassCreationPosArgsConstant6 00100000000100000000200000000200000000300000000300000000400000000400000000500000000500000000600000000600000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)67999387588.11538461538461257.0CPython 3.8425979859240.03846153846155349.3107892134153Nuitka (master)425980000391.96153846153845349.31073797285194Nuitka (develop)425983067543.8846153846154349.309623399747Nuitka (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_0e194e3e4738770b4523b19830f31c38; 84 static PyCodeObject *codeobj_0e194e3e4738770b4523b19830f31c38;
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_f89c4e4a9a8b6f329221b2b8c5975e91 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[39], NULL, NULL, 0, 0, 0); 90     codeobj_f89c4e4a9a8b6f329221b2b8c5975e91 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[36], NULL, NULL, 0, 0, 0);
91     codeobj_814c4bc4dfcaef8bfbce5da7551b0299 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[8], mod_consts[40], NULL, 0, 0, 0); 91     codeobj_814c4bc4dfcaef8bfbce5da7551b0299 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[8], mod_consts[37], NULL, 0, 0, 0);
92     codeobj_557f5e5d6a8dcb4847e14193a38e811e = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[29], mod_consts[41], NULL, 7, 0, 0); 92     codeobj_557f5e5d6a8dcb4847e14193a38e811e = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[26], mod_consts[38], NULL, 7, 0, 0);
93     codeobj_0e194e3e4738770b4523b19830f31c38 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0); 93     codeobj_0e194e3e4738770b4523b19830f31c38 = 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
742             exception_lineno = 33; 742             exception_lineno = 33;
743 743
744             goto frame_exception_exit_1; 744             goto frame_exception_exit_1;
745         } 745         }
746     } 746     }
n 747     { n
748         PyObject *tmp_called_name_1;
749         PyObject *tmp_call_result_1;
750         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
751  
752         if (unlikely(tmp_called_name_1 == NULL)) {
753             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
754         }
755  
756         if (tmp_called_name_1 == NULL) {
757             assert(ERROR_OCCURRED());
758  
759             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
760  
761  
762             exception_lineno = 38;
763  
764             goto frame_exception_exit_1;
765         }
766         frame_0e194e3e4738770b4523b19830f31c38->m_frame.f_lineno = 38;
767         tmp_call_result_1 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_1, mod_consts[9]);
768  
769         if (tmp_call_result_1 == NULL) {
770             assert(ERROR_OCCURRED());
771  
772             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
773  
774  
775             exception_lineno = 38;
776  
777             goto frame_exception_exit_1;
778         }
779         Py_DECREF(tmp_call_result_1);
780     }
781     {
782         PyObject *tmp_called_name_2;
783         PyObject *tmp_call_result_2;
784         tmp_called_name_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
785  
786         if (unlikely(tmp_called_name_2 == NULL)) {
787             tmp_called_name_2 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
788         }
789  
790         if (tmp_called_name_2 == NULL) {
791             assert(ERROR_OCCURRED());
792  
793             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
794  
795  
796             exception_lineno = 39;
797  
798             goto frame_exception_exit_1;
799         }
800         frame_0e194e3e4738770b4523b19830f31c38->m_frame.f_lineno = 39;
801         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_2, mod_consts[10]);
802  
803         if (tmp_call_result_2 == NULL) {
804             assert(ERROR_OCCURRED());
805  
806             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
807  
808  
809             exception_lineno = 39;
810  
811             goto frame_exception_exit_1;
812         }
813         Py_DECREF(tmp_call_result_2);
814     }
815     {
816         PyObject *tmp_called_name_3;
817         PyObject *tmp_call_result_3;
818         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
819  
820         if (unlikely(tmp_called_name_3 == NULL)) {
821             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
822         }
823  
824         if (tmp_called_name_3 == NULL) {
825             assert(ERROR_OCCURRED());
826  
827             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
828  
829  
830             exception_lineno = 40;
831  
832             goto frame_exception_exit_1;
833         }
834         frame_0e194e3e4738770b4523b19830f31c38->m_frame.f_lineno = 40;
835         tmp_call_result_3 = CALL_FUNCTION_WITH_POSARGS6(tmp_called_name_3, mod_consts[11]);
836  
837         if (tmp_call_result_3 == NULL) {
838             assert(ERROR_OCCURRED());
839  
840             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
841  
842  
843             exception_lineno = 40;
844  
845             goto frame_exception_exit_1;
846         }
847         Py_DECREF(tmp_call_result_3);
848     }
849 747
850 #if 0 748 #if 0
851     RESTORE_FRAME_EXCEPTION(frame_0e194e3e4738770b4523b19830f31c38); 749     RESTORE_FRAME_EXCEPTION(frame_0e194e3e4738770b4523b19830f31c38);
852 #endif 750 #endif
853 751
922 820
923 821
924 static PyObject *MAKE_FUNCTION___main__$$$function__1___init__() { 822 static PyObject *MAKE_FUNCTION___main__$$$function__1___init__() {
925     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 823     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
926         impl___main__$$$function__1___init__, 824         impl___main__$$$function__1___init__,
n 927         mod_consts[29], n 825         mod_consts[26],
928 #if PYTHON_VERSION >= 0x300 826 #if PYTHON_VERSION >= 0x300
n 929         mod_consts[30], n 827         mod_consts[27],
930 #endif 828 #endif
931         codeobj_557f5e5d6a8dcb4847e14193a38e811e, 829         codeobj_557f5e5d6a8dcb4847e14193a38e811e,
932         NULL, 830         NULL,
933 #if PYTHON_VERSION >= 0x300 831 #if PYTHON_VERSION >= 0x300
934         NULL, 832         NULL,
947 845
948 846
949 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() { 847 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() {
950     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 848     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
951         impl___main__$$$function__2_calledRepeatedly, 849         impl___main__$$$function__2_calledRepeatedly,
n 952         mod_consts[32], n 850         mod_consts[29],
953 #if PYTHON_VERSION >= 0x300 851 #if PYTHON_VERSION >= 0x300
954         NULL, 852         NULL,
955 #endif 853 #endif
956         codeobj_0e194e3e4738770b4523b19830f31c38, 854         codeobj_0e194e3e4738770b4523b19830f31c38,
957         NULL, 855         NULL,
1354 1252
1355     // Module code. 1253     // Module code.
1356     { 1254     {
1357         PyObject *tmp_assign_source_1; 1255         PyObject *tmp_assign_source_1;
1358         tmp_assign_source_1 = Py_None; 1256         tmp_assign_source_1 = Py_None;
n 1359         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_1); n 1257         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_1);
1360     } 1258     }
1361     { 1259     {
1362         PyObject *tmp_assign_source_2; 1260         PyObject *tmp_assign_source_2;
n 1363         tmp_assign_source_2 = mod_consts[13]; n 1261         tmp_assign_source_2 = mod_consts[10];
1364         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_2); 1262         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_2);
1365     } 1263     }
1366     { 1264     {
1367         PyObject *tmp_assign_source_3; 1265         PyObject *tmp_assign_source_3;
1368         tmp_assign_source_3 = Py_None; 1266         tmp_assign_source_3 = Py_None;
n 1369         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_3); n 1267         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_3);
1370     } 1268     }
1371     { 1269     {
1372         PyObject *tmp_assign_source_4; 1270         PyObject *tmp_assign_source_4;
1373         tmp_assign_source_4 = PyDict_New(); 1271         tmp_assign_source_4 = PyDict_New();
n 1374         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[16], tmp_assign_source_4); n 1272         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_4);
1375     } 1273     }
1376     { 1274     {
1377         PyObject *tmp_assign_source_5; 1275         PyObject *tmp_assign_source_5;
1378         { 1276         {
1379             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1277             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1380             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[17]); n 1278             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[14]);
1381         } 1279         }
1382 1280
1383         assert(!(tmp_assign_source_5 == NULL)); 1281         assert(!(tmp_assign_source_5 == NULL));
n 1384         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[17], tmp_assign_source_5); n 1282         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_5);
1385     } 1283     }
1386     // Frame without reuse. 1284     // Frame without reuse.
1387     frame_f89c4e4a9a8b6f329221b2b8c5975e91 = MAKE_MODULE_FRAME(codeobj_f89c4e4a9a8b6f329221b2b8c5975e91, module___main__); 1285     frame_f89c4e4a9a8b6f329221b2b8c5975e91 = MAKE_MODULE_FRAME(codeobj_f89c4e4a9a8b6f329221b2b8c5975e91, module___main__);
1388 1286
1389     // Push the new frame as the currently active one, and we should be exclusively 1287     // Push the new frame as the currently active one, and we should be exclusively
1394     // Framed code: 1292     // Framed code:
1395     // Tried code: 1293     // Tried code:
1396     { 1294     {
1397         PyObject *tmp_assign_source_6; 1295         PyObject *tmp_assign_source_6;
1398         PyObject *tmp_dircall_arg1_1; 1296         PyObject *tmp_dircall_arg1_1;
n 1399         tmp_dircall_arg1_1 = mod_consts[18]; n 1297         tmp_dircall_arg1_1 = mod_consts[15];
1400         Py_INCREF(tmp_dircall_arg1_1); 1298         Py_INCREF(tmp_dircall_arg1_1);
1401 1299
1402         { 1300         {
1403             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1301             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1404             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1302             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1434         int tmp_truth_name_1; 1332         int tmp_truth_name_1;
1435         PyObject *tmp_type_arg_1; 1333         PyObject *tmp_type_arg_1;
1436         PyObject *tmp_expression_name_1; 1334         PyObject *tmp_expression_name_1;
1437         PyObject *tmp_subscript_name_1; 1335         PyObject *tmp_subscript_name_1;
1438         PyObject *tmp_bases_name_1; 1336         PyObject *tmp_bases_name_1;
n 1439         tmp_key_name_1 = mod_consts[19]; n 1337         tmp_key_name_1 = mod_consts[16];
1440         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1338         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1441         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1339         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1442         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1340         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1443         assert(!(tmp_res == -1)); 1341         assert(!(tmp_res == -1));
1444         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1342         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1448             goto condexpr_false_1; 1346             goto condexpr_false_1;
1449         } 1347         }
1450         condexpr_true_1:; 1348         condexpr_true_1:;
1451         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1349         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1452         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1350         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1453         tmp_key_name_2 = mod_consts[19]; n 1351         tmp_key_name_2 = mod_consts[16];
1454         \ 1352         \
1455         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2); 1353         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2);
1456         if (tmp_metaclass_name_1 == NULL) { 1354         if (tmp_metaclass_name_1 == NULL) {
1457             tmp_metaclass_name_1 = Py_None; 1355             tmp_metaclass_name_1 = Py_None;
1458         } 1356         }
1480             goto condexpr_false_2; 1378             goto condexpr_false_2;
1481         } 1379         }
1482         condexpr_true_2:; 1380         condexpr_true_2:;
1483         CHECK_OBJECT(tmp_class_creation_1__bases); 1381         CHECK_OBJECT(tmp_class_creation_1__bases);
1484         tmp_expression_name_1 = tmp_class_creation_1__bases; 1382         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1485         tmp_subscript_name_1 = mod_consts[20]; n 1383         tmp_subscript_name_1 = mod_consts[17];
1486         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1384         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1487         if (tmp_type_arg_1 == NULL) { 1385         if (tmp_type_arg_1 == NULL) {
1488             assert(ERROR_OCCURRED()); 1386             assert(ERROR_OCCURRED());
1489 1387
1490             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1388             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1531     } 1429     }
1532     { 1430     {
1533         nuitka_bool tmp_condition_result_3; 1431         nuitka_bool tmp_condition_result_3;
1534         PyObject *tmp_key_name_3; 1432         PyObject *tmp_key_name_3;
1535         PyObject *tmp_dict_arg_name_3; 1433         PyObject *tmp_dict_arg_name_3;
n 1536         tmp_key_name_3 = mod_consts[19]; n 1434         tmp_key_name_3 = mod_consts[16];
1537         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1435         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1538         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1436         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1539         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1437         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1540         assert(!(tmp_res == -1)); 1438         assert(!(tmp_res == -1));
1541         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1439         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1546         } 1444         }
1547     } 1445     }
1548     branch_yes_1:; 1446     branch_yes_1:;
1549     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1447     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1550     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1448     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1551     tmp_dictdel_key = mod_consts[19]; n 1449     tmp_dictdel_key = mod_consts[16];
1552     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1450     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1553     if (tmp_result == false) { 1451     if (tmp_result == false) {
1554         assert(ERROR_OCCURRED()); 1452         assert(ERROR_OCCURRED());
1555 1453
1556         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1454         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1564     { 1462     {
1565         nuitka_bool tmp_condition_result_4; 1463         nuitka_bool tmp_condition_result_4;
1566         PyObject *tmp_expression_name_2; 1464         PyObject *tmp_expression_name_2;
1567         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1465         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1568         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1466         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1569         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[21]); n 1467         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[18]);
1570         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1468         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1571         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1469         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1572             goto branch_yes_2; 1470             goto branch_yes_2;
1573         } else { 1471         } else {
1574             goto branch_no_2; 1472             goto branch_no_2;
1582         PyObject *tmp_args_name_1; 1480         PyObject *tmp_args_name_1;
1583         PyObject *tmp_tuple_element_1; 1481         PyObject *tmp_tuple_element_1;
1584         PyObject *tmp_kwargs_name_1; 1482         PyObject *tmp_kwargs_name_1;
1585         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1483         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1586         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1484         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1587         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[21]); n 1485         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[18]);
1588         if (tmp_called_name_1 == NULL) { 1486         if (tmp_called_name_1 == NULL) {
1589             assert(ERROR_OCCURRED()); 1487             assert(ERROR_OCCURRED());
1590 1488
1591             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1489             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1592 1490
1624         nuitka_bool tmp_condition_result_5; 1522         nuitka_bool tmp_condition_result_5;
1625         PyObject *tmp_operand_name_1; 1523         PyObject *tmp_operand_name_1;
1626         PyObject *tmp_expression_name_4; 1524         PyObject *tmp_expression_name_4;
1627         CHECK_OBJECT(tmp_class_creation_1__prepared); 1525         CHECK_OBJECT(tmp_class_creation_1__prepared);
1628         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1526         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1629         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[22]); n 1527         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[19]);
1630         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1528         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1631         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1529         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1632         if (tmp_res == -1) { 1530         if (tmp_res == -1) {
1633             assert(ERROR_OCCURRED()); 1531             assert(ERROR_OCCURRED());
1634 1532
1655         PyObject *tmp_tuple_element_2; 1553         PyObject *tmp_tuple_element_2;
1656         PyObject *tmp_getattr_target_1; 1554         PyObject *tmp_getattr_target_1;
1657         PyObject *tmp_getattr_attr_1; 1555         PyObject *tmp_getattr_attr_1;
1658         PyObject *tmp_getattr_default_1; 1556         PyObject *tmp_getattr_default_1;
1659         tmp_raise_type_1 = PyExc_TypeError; 1557         tmp_raise_type_1 = PyExc_TypeError;
n 1660         tmp_left_name_1 = mod_consts[23]; n 1558         tmp_left_name_1 = mod_consts[20];
1661         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1559         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1662         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1560         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1663         tmp_getattr_attr_1 = mod_consts[24]; n 1561         tmp_getattr_attr_1 = mod_consts[21];
1664         tmp_getattr_default_1 = mod_consts[25]; 1562         tmp_getattr_default_1 = mod_consts[22];
1665         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1563         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1666         if (tmp_tuple_element_2 == NULL) { 1564         if (tmp_tuple_element_2 == NULL) {
1667             assert(ERROR_OCCURRED()); 1565             assert(ERROR_OCCURRED());
1668 1566
1669             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1567             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1680             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1578             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1681             CHECK_OBJECT(tmp_class_creation_1__prepared); 1579             CHECK_OBJECT(tmp_class_creation_1__prepared);
1682             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1580             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1683             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1581             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1684             assert(!(tmp_expression_name_5 == NULL)); 1582             assert(!(tmp_expression_name_5 == NULL));
n 1685             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[24]); n 1583             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[21]);
1686             Py_DECREF(tmp_expression_name_5); 1584             Py_DECREF(tmp_expression_name_5);
1687             if (tmp_tuple_element_2 == NULL) { 1585             if (tmp_tuple_element_2 == NULL) {
1688                 assert(ERROR_OCCURRED()); 1586                 assert(ERROR_OCCURRED());
1689 1587
1690                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1588                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1742             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1640             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1743             Py_INCREF(tmp_set_locals_1); 1641             Py_INCREF(tmp_set_locals_1);
1744         } 1642         }
1745         // Tried code: 1643         // Tried code:
1746         // Tried code: 1644         // Tried code:
n 1747         tmp_dictset_value = mod_consts[26]; n 1645         tmp_dictset_value = mod_consts[23];
1748         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[27], tmp_dictset_value); 1646         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[24], tmp_dictset_value);
1749         if (tmp_res != 0) { 1647         if (tmp_res != 0) {
1750             assert(ERROR_OCCURRED()); 1648             assert(ERROR_OCCURRED());
1751 1649
1752             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1650             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1753 1651
1755             exception_lineno = 22; 1653             exception_lineno = 22;
1756 1654
1757             goto try_except_handler_3; 1655             goto try_except_handler_3;
1758         } 1656         }
1759         tmp_dictset_value = mod_consts[8]; 1657         tmp_dictset_value = mod_consts[8];
n 1760         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[28], tmp_dictset_value); n 1658         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[25], tmp_dictset_value);
1761         if (tmp_res != 0) { 1659         if (tmp_res != 0) {
1762             assert(ERROR_OCCURRED()); 1660             assert(ERROR_OCCURRED());
1763 1661
1764             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1662             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1765 1663
1797         // Framed code: 1695         // Framed code:
1798 1696
1799 1697
1800         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1___init__(); 1698         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1___init__();
1801 1699
n 1802         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[29], tmp_dictset_value); n 1700         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[26], tmp_dictset_value);
1803         Py_DECREF(tmp_dictset_value); 1701         Py_DECREF(tmp_dictset_value);
1804         if (tmp_res != 0) { 1702         if (tmp_res != 0) {
1805             assert(ERROR_OCCURRED()); 1703             assert(ERROR_OCCURRED());
1806 1704
1807             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1705             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1870             nuitka_bool tmp_condition_result_6; 1768             nuitka_bool tmp_condition_result_6;
1871             PyObject *tmp_compexpr_left_1; 1769             PyObject *tmp_compexpr_left_1;
1872             PyObject *tmp_compexpr_right_1; 1770             PyObject *tmp_compexpr_right_1;
1873             CHECK_OBJECT(tmp_class_creation_1__bases); 1771             CHECK_OBJECT(tmp_class_creation_1__bases);
1874             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1772             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1875             tmp_compexpr_right_1 = mod_consts[18]; n 1773             tmp_compexpr_right_1 = mod_consts[15];
1876             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1774             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1877             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1775             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1878                 assert(ERROR_OCCURRED()); 1776                 assert(ERROR_OCCURRED());
1879 1777
1880                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1778                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1890                 goto branch_no_4; 1788                 goto branch_no_4;
1891             } 1789             }
1892             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1790             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1893         } 1791         }
1894         branch_yes_4:; 1792         branch_yes_4:;
n 1895         tmp_dictset_value = mod_consts[18]; n 1793         tmp_dictset_value = mod_consts[15];
1896         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[31], tmp_dictset_value); 1794         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[28], tmp_dictset_value);
1897         if (tmp_res != 0) { 1795         if (tmp_res != 0) {
1898             assert(ERROR_OCCURRED()); 1796             assert(ERROR_OCCURRED());
1899 1797
1900             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1798             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1901 1799
2048         PyObject *tmp_assign_source_13; 1946         PyObject *tmp_assign_source_13;
2049 1947
2050 1948
2051         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly(); 1949         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly();
2052 1950
n 2053         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[32], tmp_assign_source_13); n 1951         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[29], tmp_assign_source_13);
2054     } 1952     }
2055     { 1953     {
2056         PyObject *tmp_assign_source_14; 1954         PyObject *tmp_assign_source_14;
2057         PyObject *tmp_name_name_1; 1955         PyObject *tmp_name_name_1;
2058         PyObject *tmp_globals_arg_name_1; 1956         PyObject *tmp_globals_arg_name_1;
2059         PyObject *tmp_locals_arg_name_1; 1957         PyObject *tmp_locals_arg_name_1;
2060         PyObject *tmp_fromlist_name_1; 1958         PyObject *tmp_fromlist_name_1;
2061         PyObject *tmp_level_name_1; 1959         PyObject *tmp_level_name_1;
n 2062         tmp_name_name_1 = mod_consts[33]; n 1960         tmp_name_name_1 = mod_consts[30];
2063         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1961         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
2064         tmp_locals_arg_name_1 = Py_None; 1962         tmp_locals_arg_name_1 = Py_None;
2065         tmp_fromlist_name_1 = Py_None; 1963         tmp_fromlist_name_1 = Py_None;
n 2066         tmp_level_name_1 = mod_consts[20]; n 1964         tmp_level_name_1 = mod_consts[17];
2067         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 46; 1965         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 46;
2068         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); 1966         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);
2069         assert(!(tmp_assign_source_14 == NULL)); 1967         assert(!(tmp_assign_source_14 == NULL));
n 2070         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[33], tmp_assign_source_14); n 1968         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[30], tmp_assign_source_14);
2071     } 1969     }
2072     { 1970     {
2073         PyObject *tmp_assign_source_15; 1971         PyObject *tmp_assign_source_15;
2074         PyObject *tmp_iter_arg_1; 1972         PyObject *tmp_iter_arg_1;
2075         PyObject *tmp_called_instance_1; 1973         PyObject *tmp_called_instance_1;
n 2076         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[33]); n 1974         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[30]);
2077 1975
2078         if (unlikely(tmp_called_instance_1 == NULL)) { 1976         if (unlikely(tmp_called_instance_1 == NULL)) {
n 2079             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[33]); n 1977             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[30]);
2080         } 1978         }
2081 1979
2082         assert(!(tmp_called_instance_1 == NULL)); 1980         assert(!(tmp_called_instance_1 == NULL));
2083         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 47; 1981         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 47;
2084         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1982         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
2085             tmp_called_instance_1, 1983             tmp_called_instance_1,
n 2086             mod_consts[34], n 1984             mod_consts[31],
2087             &PyTuple_GET_ITEM(mod_consts[35], 0) 1985             &PyTuple_GET_ITEM(mod_consts[32], 0)
2088         ); 1986         );
2089 1987
2090         if (tmp_iter_arg_1 == NULL) { 1988         if (tmp_iter_arg_1 == NULL) {
2091             assert(ERROR_OCCURRED()); 1989             assert(ERROR_OCCURRED());
2092 1990
2142     } 2040     }
2143     { 2041     {
2144         PyObject *tmp_assign_source_17; 2042         PyObject *tmp_assign_source_17;
2145         CHECK_OBJECT(tmp_for_loop_1__iter_value); 2043         CHECK_OBJECT(tmp_for_loop_1__iter_value);
2146         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 2044         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 2147         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[36], tmp_assign_source_17); n 2045         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[33], tmp_assign_source_17);
2148     } 2046     }
2149     { 2047     {
2150         PyObject *tmp_called_name_3; 2048         PyObject *tmp_called_name_3;
2151         PyObject *tmp_call_result_1; 2049         PyObject *tmp_call_result_1;
n 2152         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[32]); n 2050         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[29]);
2153 2051
2154         if (unlikely(tmp_called_name_3 == NULL)) { 2052         if (unlikely(tmp_called_name_3 == NULL)) {
n 2155             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[32]); n 2053             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[29]);
2156         } 2054         }
2157 2055
2158         if (tmp_called_name_3 == NULL) { 2056         if (tmp_called_name_3 == NULL) {
2159             assert(ERROR_OCCURRED()); 2057             assert(ERROR_OCCURRED());
2160 2058
2223     Py_DECREF(tmp_for_loop_1__for_iterator); 2121     Py_DECREF(tmp_for_loop_1__for_iterator);
2224     tmp_for_loop_1__for_iterator = NULL; 2122     tmp_for_loop_1__for_iterator = NULL;
2225     { 2123     {
2226         PyObject *tmp_called_name_4; 2124         PyObject *tmp_called_name_4;
2227         PyObject *tmp_call_result_2; 2125         PyObject *tmp_call_result_2;
n 2228         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[37]); n 2126         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[34]);
2229         assert(tmp_called_name_4 != NULL); 2127         assert(tmp_called_name_4 != NULL);
2230         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 50; 2128         frame_f89c4e4a9a8b6f329221b2b8c5975e91->m_frame.f_lineno = 50;
t 2231         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[38]); t 2129         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[35]);
2232 2130
2233         if (tmp_call_result_2 == NULL) { 2131         if (tmp_call_result_2 == NULL) {
2234             assert(ERROR_OCCURRED()); 2132             assert(ERROR_OCCURRED());
2235 2133
2236             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 2134             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);