Construct CallCompiledObjectMethodPosArgsDefaults

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)18693650488.11538461538461257.0CPython 2.766700100240.03846153846155415.94308807246534Nuitka (main)66700100391.96153846153845415.94308807246534Nuitka (develop)66700100543.8846153846154415.94308807246534Nuitka (factory)Construct CallCompiledObjectMethodPosArgsDefaultsTicks Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)18005990788.11538461538461257.0CPython 3.871602649240.03846153846155405.8474445618813Nuitka (main)71603029391.96153846153845405.84692304741577Nuitka (develop)71603029543.8846153846154405.84692304741577Nuitka (factory)Construct CallCompiledObjectMethodPosArgsDefaultsTicks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a = 1, b = 2,c = 3,d = 4,e = 5,f = 6):
        return a, b, c, d, e, f

def calledRepeatedly():
    inst = C()

    # This is supposed to make a call to a compiled method, which is
    # being optimized separately.
# construct_begin
    inst.compiled_method()
    inst.compiled_method()
    inst.compiled_method()
# 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 compiled_method(self, a = 1, b = 2,c = 3,d = 4,e = 5,f = 6):
        return a, b, c, d, e, f

def calledRepeatedly():
    inst = 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
27     inst = C() 27     inst = C()
28 28
29     # This is supposed to make a call to a compiled method, which is 29     # This is supposed to make a call to a compiled method, which is
30     # being optimized separately. 30     # being optimized separately.
31 # construct_begin 31 # construct_begin
n 32     inst.compiled_method() n
33     inst.compiled_method()
34     inst.compiled_method()
35 # construct_alternative
36 32
37 33
t t 34  
35 # construct_alternative
36     pass
37 # construct_end
38 38
39 import itertools 39 import itertools
40 for x in itertools.repeat(None, 50000): 40 for x in itertools.repeat(None, 50000):
41     calledRepeatedly() 41     calledRepeatedly()
42 42

Context Diff of Generated Code


Construct
Baseline
84 static PyCodeObject *codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e; 84 static PyCodeObject *codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e;
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[5]; CHECK_OBJECT(module_filename_obj); n 89     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
90     codeobj_2436451561483ead9047c58335a93f90 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0); 90     codeobj_2436451561483ead9047c58335a93f90 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0);
91     codeobj_ae5ad40061f0d1d7798194fa2b04d952 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0); 91     codeobj_ae5ad40061f0d1d7798194fa2b04d952 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0);
92     codeobj_003245af9f4c6fbff0d487fbbaed7572 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_003245af9f4c6fbff0d487fbbaed7572 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0);
n 93     codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[34], NULL, 7, 0, 0); n 93     codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[21], mod_consts[34], NULL, 7, 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
489     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 489     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
490     PyObject *exception_type = NULL; 490     PyObject *exception_type = NULL;
491     PyObject *exception_value = NULL; 491     PyObject *exception_value = NULL;
492     PyTracebackObject *exception_tb = NULL; 492     PyTracebackObject *exception_tb = NULL;
493     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 493     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 494     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
495     static struct Nuitka_FrameObject *cache_frame_003245af9f4c6fbff0d487fbbaed7572 = NULL; 494     static struct Nuitka_FrameObject *cache_frame_003245af9f4c6fbff0d487fbbaed7572 = NULL;
496     PyObject *tmp_return_value = NULL; 495     PyObject *tmp_return_value = NULL;
497     PyObject *exception_keeper_type_1; 496     PyObject *exception_keeper_type_1;
498     PyObject *exception_keeper_value_1; 497     PyObject *exception_keeper_value_1;
499     PyTracebackObject *exception_keeper_tb_1; 498     PyTracebackObject *exception_keeper_tb_1;
559             type_description_1 = "o"; 558             type_description_1 = "o";
560             goto frame_exception_exit_1; 559             goto frame_exception_exit_1;
561         } 560         }
562         assert(var_inst == NULL); 561         assert(var_inst == NULL);
563         var_inst = tmp_assign_source_1; 562         var_inst = tmp_assign_source_1;
n 564     } n
565     {
566         PyObject *tmp_called_instance_1;
567         PyObject *tmp_call_result_1;
568         CHECK_OBJECT(var_inst);
569         tmp_called_instance_1 = var_inst;
570         frame_003245af9f4c6fbff0d487fbbaed7572->m_frame.f_lineno = 32;
571         tmp_call_result_1 = CALL_METHOD_NO_ARGS(tmp_called_instance_1, mod_consts[3]);
572         if (tmp_call_result_1 == NULL) {
573             assert(ERROR_OCCURRED());
574  
575             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
576  
577  
578             exception_lineno = 32;
579             type_description_1 = "o";
580             goto frame_exception_exit_1;
581         }
582         Py_DECREF(tmp_call_result_1);
583     }
584     {
585         PyObject *tmp_called_instance_2;
586         PyObject *tmp_call_result_2;
587         CHECK_OBJECT(var_inst);
588         tmp_called_instance_2 = var_inst;
589         frame_003245af9f4c6fbff0d487fbbaed7572->m_frame.f_lineno = 33;
590         tmp_call_result_2 = CALL_METHOD_NO_ARGS(tmp_called_instance_2, mod_consts[3]);
591         if (tmp_call_result_2 == NULL) {
592             assert(ERROR_OCCURRED());
593  
594             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
595  
596  
597             exception_lineno = 33;
598             type_description_1 = "o";
599             goto frame_exception_exit_1;
600         }
601         Py_DECREF(tmp_call_result_2);
602     }
603     {
604         PyObject *tmp_called_instance_3;
605         PyObject *tmp_call_result_3;
606         CHECK_OBJECT(var_inst);
607         tmp_called_instance_3 = var_inst;
608         frame_003245af9f4c6fbff0d487fbbaed7572->m_frame.f_lineno = 34;
609         tmp_call_result_3 = CALL_METHOD_NO_ARGS(tmp_called_instance_3, mod_consts[3]);
610         if (tmp_call_result_3 == NULL) {
611             assert(ERROR_OCCURRED());
612  
613             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
614  
615  
616             exception_lineno = 34;
617             type_description_1 = "o";
618             goto frame_exception_exit_1;
619         }
620         Py_DECREF(tmp_call_result_3);
621     } 563     }
622 564
623 #if 0 565 #if 0
624     RESTORE_FRAME_EXCEPTION(frame_003245af9f4c6fbff0d487fbbaed7572); 566     RESTORE_FRAME_EXCEPTION(frame_003245af9f4c6fbff0d487fbbaed7572);
625 #endif 567 #endif
689     exception_type = NULL; 631     exception_type = NULL;
690     exception_value = NULL; 632     exception_value = NULL;
691     exception_tb = NULL; 633     exception_tb = NULL;
692     exception_lineno = 0; 634     exception_lineno = 0;
693 635
n 694     Py_XDECREF(var_inst); n
695     var_inst = NULL;
696     // Re-raise. 636     // Re-raise.
697     exception_type = exception_keeper_type_1; 637     exception_type = exception_keeper_type_1;
698     exception_value = exception_keeper_value_1; 638     exception_value = exception_keeper_value_1;
699     exception_tb = exception_keeper_tb_1; 639     exception_tb = exception_keeper_tb_1;
700     exception_lineno = exception_keeper_lineno_1; 640     exception_lineno = exception_keeper_lineno_1;
725 665
726 666
727 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method(PyObject *defaults) { 667 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method(PyObject *defaults) {
728     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 668     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
729         impl___main__$$$function__1_compiled_method, 669         impl___main__$$$function__1_compiled_method,
n 730         mod_consts[3], n 670         mod_consts[21],
731 #if PYTHON_VERSION >= 0x300 671 #if PYTHON_VERSION >= 0x300
732         mod_consts[22], 672         mod_consts[22],
733 #endif 673 #endif
734         codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e, 674         codeobj_cc90f0d1a2ecb95d8fb423cbb5389b0e,
735         defaults, 675         defaults,
1162 1102
1163     // Module code. 1103     // Module code.
1164     { 1104     {
1165         PyObject *tmp_assign_source_1; 1105         PyObject *tmp_assign_source_1;
1166         tmp_assign_source_1 = Py_None; 1106         tmp_assign_source_1 = Py_None;
n 1167         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1107         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1168     } 1108     }
1169     { 1109     {
1170         PyObject *tmp_assign_source_2; 1110         PyObject *tmp_assign_source_2;
n 1171         tmp_assign_source_2 = mod_consts[5]; n 1111         tmp_assign_source_2 = mod_consts[4];
1172         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1112         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1173     } 1113     }
1174     { 1114     {
1175         PyObject *tmp_assign_source_3; 1115         PyObject *tmp_assign_source_3;
1176         tmp_assign_source_3 = Py_None; 1116         tmp_assign_source_3 = Py_None;
n 1177         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1117         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1178     } 1118     }
1179     { 1119     {
1180         PyObject *tmp_assign_source_4; 1120         PyObject *tmp_assign_source_4;
1181         tmp_assign_source_4 = PyDict_New(); 1121         tmp_assign_source_4 = PyDict_New();
n 1182         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1122         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1183     } 1123     }
1184     { 1124     {
1185         PyObject *tmp_assign_source_5; 1125         PyObject *tmp_assign_source_5;
1186         { 1126         {
1187             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1127             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1188             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1128             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1189         } 1129         }
1190 1130
1191         assert(!(tmp_assign_source_5 == NULL)); 1131         assert(!(tmp_assign_source_5 == NULL));
n 1192         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1132         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1193     } 1133     }
1194     // Frame without reuse. 1134     // Frame without reuse.
1195     frame_2436451561483ead9047c58335a93f90 = MAKE_MODULE_FRAME(codeobj_2436451561483ead9047c58335a93f90, module___main__); 1135     frame_2436451561483ead9047c58335a93f90 = MAKE_MODULE_FRAME(codeobj_2436451561483ead9047c58335a93f90, module___main__);
1196 1136
1197     // Push the new frame as the currently active one, and we should be exclusively 1137     // Push the new frame as the currently active one, and we should be exclusively
1202     // Framed code: 1142     // Framed code:
1203     // Tried code: 1143     // Tried code:
1204     { 1144     {
1205         PyObject *tmp_assign_source_6; 1145         PyObject *tmp_assign_source_6;
1206         PyObject *tmp_dircall_arg1_1; 1146         PyObject *tmp_dircall_arg1_1;
n 1207         tmp_dircall_arg1_1 = mod_consts[10]; n 1147         tmp_dircall_arg1_1 = mod_consts[9];
1208         Py_INCREF(tmp_dircall_arg1_1); 1148         Py_INCREF(tmp_dircall_arg1_1);
1209 1149
1210         { 1150         {
1211             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1151             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1212             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1152             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1242         int tmp_truth_name_1; 1182         int tmp_truth_name_1;
1243         PyObject *tmp_type_arg_1; 1183         PyObject *tmp_type_arg_1;
1244         PyObject *tmp_expression_value_1; 1184         PyObject *tmp_expression_value_1;
1245         PyObject *tmp_subscript_value_1; 1185         PyObject *tmp_subscript_value_1;
1246         PyObject *tmp_bases_value_1; 1186         PyObject *tmp_bases_value_1;
n 1247         tmp_key_value_1 = mod_consts[11]; n 1187         tmp_key_value_1 = mod_consts[10];
1248         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1188         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1249         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict; 1189         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict;
1250         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1); 1190         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1);
1251         assert(!(tmp_res == -1)); 1191         assert(!(tmp_res == -1));
1252         tmp_condition_result_1 = (tmp_res != 0) ? true : false; 1192         tmp_condition_result_1 = (tmp_res != 0) ? true : false;
1256             goto condexpr_false_1; 1196             goto condexpr_false_1;
1257         } 1197         }
1258         condexpr_true_1:; 1198         condexpr_true_1:;
1259         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1199         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1260         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict; 1200         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict;
n 1261         tmp_key_value_2 = mod_consts[11]; n 1201         tmp_key_value_2 = mod_consts[10];
1262         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2); 1202         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2);
1263         if (tmp_metaclass_value_1 == NULL) { 1203         if (tmp_metaclass_value_1 == NULL) {
1264             tmp_metaclass_value_1 = Py_None; 1204             tmp_metaclass_value_1 = Py_None;
1265         } 1205         }
1266         assert(!(tmp_metaclass_value_1 == NULL)); 1206         assert(!(tmp_metaclass_value_1 == NULL));
1286             goto condexpr_false_2; 1226             goto condexpr_false_2;
1287         } 1227         }
1288         condexpr_true_2:; 1228         condexpr_true_2:;
1289         CHECK_OBJECT(tmp_class_creation_1__bases); 1229         CHECK_OBJECT(tmp_class_creation_1__bases);
1290         tmp_expression_value_1 = tmp_class_creation_1__bases; 1230         tmp_expression_value_1 = tmp_class_creation_1__bases;
n 1291         tmp_subscript_value_1 = mod_consts[12]; n 1231         tmp_subscript_value_1 = mod_consts[11];
1292         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0); 1232         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0);
1293         if (tmp_type_arg_1 == NULL) { 1233         if (tmp_type_arg_1 == NULL) {
1294             assert(ERROR_OCCURRED()); 1234             assert(ERROR_OCCURRED());
1295 1235
1296             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1236             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1337     } 1277     }
1338     { 1278     {
1339         bool tmp_condition_result_3; 1279         bool tmp_condition_result_3;
1340         PyObject *tmp_key_value_3; 1280         PyObject *tmp_key_value_3;
1341         PyObject *tmp_dict_arg_value_3; 1281         PyObject *tmp_dict_arg_value_3;
n 1342         tmp_key_value_3 = mod_consts[11]; n 1282         tmp_key_value_3 = mod_consts[10];
1343         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1283         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1344         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict; 1284         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict;
1345         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3); 1285         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3);
1346         assert(!(tmp_res == -1)); 1286         assert(!(tmp_res == -1));
1347         tmp_condition_result_3 = (tmp_res != 0) ? true : false; 1287         tmp_condition_result_3 = (tmp_res != 0) ? true : false;
1352         } 1292         }
1353     } 1293     }
1354     branch_yes_1:; 1294     branch_yes_1:;
1355     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1295     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1356     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1296     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1357     tmp_dictdel_key = mod_consts[11]; n 1297     tmp_dictdel_key = mod_consts[10];
1358     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1298     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1359     if (tmp_result == false) { 1299     if (tmp_result == false) {
1360         assert(ERROR_OCCURRED()); 1300         assert(ERROR_OCCURRED());
1361 1301
1362         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1302         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1370     { 1310     {
1371         nuitka_bool tmp_condition_result_4; 1311         nuitka_bool tmp_condition_result_4;
1372         PyObject *tmp_expression_value_2; 1312         PyObject *tmp_expression_value_2;
1373         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1313         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1374         tmp_expression_value_2 = tmp_class_creation_1__metaclass; 1314         tmp_expression_value_2 = tmp_class_creation_1__metaclass;
n 1375         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[13]); n 1315         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[12]);
1376         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1316         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1377         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1317         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1378             goto branch_yes_2; 1318             goto branch_yes_2;
1379         } else { 1319         } else {
1380             goto branch_no_2; 1320             goto branch_no_2;
1388         PyObject *tmp_args_value_1; 1328         PyObject *tmp_args_value_1;
1389         PyObject *tmp_tuple_element_1; 1329         PyObject *tmp_tuple_element_1;
1390         PyObject *tmp_kwargs_value_1; 1330         PyObject *tmp_kwargs_value_1;
1391         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1331         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1392         tmp_expression_value_3 = tmp_class_creation_1__metaclass; 1332         tmp_expression_value_3 = tmp_class_creation_1__metaclass;
n 1393         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[13]); n 1333         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[12]);
1394         if (tmp_called_value_1 == NULL) { 1334         if (tmp_called_value_1 == NULL) {
1395             assert(ERROR_OCCURRED()); 1335             assert(ERROR_OCCURRED());
1396 1336
1397             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1337             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1398 1338
1430         bool tmp_condition_result_5; 1370         bool tmp_condition_result_5;
1431         PyObject *tmp_operand_value_1; 1371         PyObject *tmp_operand_value_1;
1432         PyObject *tmp_expression_value_4; 1372         PyObject *tmp_expression_value_4;
1433         CHECK_OBJECT(tmp_class_creation_1__prepared); 1373         CHECK_OBJECT(tmp_class_creation_1__prepared);
1434         tmp_expression_value_4 = tmp_class_creation_1__prepared; 1374         tmp_expression_value_4 = tmp_class_creation_1__prepared;
n 1435         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[14]); n 1375         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[13]);
1436         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False; 1376         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False;
1437         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1); 1377         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1);
1438         if (tmp_res == -1) { 1378         if (tmp_res == -1) {
1439             assert(ERROR_OCCURRED()); 1379             assert(ERROR_OCCURRED());
1440 1380
1461         PyObject *tmp_tuple_element_2; 1401         PyObject *tmp_tuple_element_2;
1462         PyObject *tmp_getattr_target_1; 1402         PyObject *tmp_getattr_target_1;
1463         PyObject *tmp_getattr_attr_1; 1403         PyObject *tmp_getattr_attr_1;
1464         PyObject *tmp_getattr_default_1; 1404         PyObject *tmp_getattr_default_1;
1465         tmp_raise_type_1 = PyExc_TypeError; 1405         tmp_raise_type_1 = PyExc_TypeError;
n 1466         tmp_left_value_1 = mod_consts[15]; n 1406         tmp_left_value_1 = mod_consts[14];
1467         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1407         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1468         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1408         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1469         tmp_getattr_attr_1 = mod_consts[16]; n 1409         tmp_getattr_attr_1 = mod_consts[15];
1470         tmp_getattr_default_1 = mod_consts[17]; 1410         tmp_getattr_default_1 = mod_consts[16];
1471         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1411         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1472         if (tmp_tuple_element_2 == NULL) { 1412         if (tmp_tuple_element_2 == NULL) {
1473             assert(ERROR_OCCURRED()); 1413             assert(ERROR_OCCURRED());
1474 1414
1475             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1415             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1486             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2); 1426             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2);
1487             CHECK_OBJECT(tmp_class_creation_1__prepared); 1427             CHECK_OBJECT(tmp_class_creation_1__prepared);
1488             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1428             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1489             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1429             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1490             assert(!(tmp_expression_value_5 == NULL)); 1430             assert(!(tmp_expression_value_5 == NULL));
n 1491             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[16]); n 1431             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[15]);
1492             Py_DECREF(tmp_expression_value_5); 1432             Py_DECREF(tmp_expression_value_5);
1493             if (tmp_tuple_element_2 == NULL) { 1433             if (tmp_tuple_element_2 == NULL) {
1494                 assert(ERROR_OCCURRED()); 1434                 assert(ERROR_OCCURRED());
1495 1435
1496                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1436                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1548             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1488             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1549             Py_INCREF(tmp_set_locals_1); 1489             Py_INCREF(tmp_set_locals_1);
1550         } 1490         }
1551         // Tried code: 1491         // Tried code:
1552         // Tried code: 1492         // Tried code:
n 1553         tmp_dictset_value = mod_consts[18]; n 1493         tmp_dictset_value = mod_consts[17];
1494         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1495         if (tmp_res != 0) {
1496             assert(ERROR_OCCURRED());
1497  
1498             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1499  
1500  
1501             exception_lineno = 22;
1502  
1503             goto try_except_handler_3;
1504         }
1505         tmp_dictset_value = mod_consts[2];
1554         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1506         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1555         if (tmp_res != 0) { n
1556             assert(ERROR_OCCURRED());
1557  
1558             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1559  
1560  
1561             exception_lineno = 22;
1562  
1563             goto try_except_handler_3;
1564         }
1565         tmp_dictset_value = mod_consts[2];
1566         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1567         if (tmp_res != 0) { 1507         if (tmp_res != 0) {
1568             assert(ERROR_OCCURRED()); 1508             assert(ERROR_OCCURRED());
1569 1509
1570             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1510             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1571 1511
1601         assert(Py_REFCNT(frame_ae5ad40061f0d1d7798194fa2b04d952_2) == 2); // Frame stack 1541         assert(Py_REFCNT(frame_ae5ad40061f0d1d7798194fa2b04d952_2) == 2); // Frame stack
1602 1542
1603         // Framed code: 1543         // Framed code:
1604         { 1544         {
1605             PyObject *tmp_defaults_1; 1545             PyObject *tmp_defaults_1;
n 1606             tmp_defaults_1 = mod_consts[21]; n 1546             tmp_defaults_1 = mod_consts[20];
1607             Py_INCREF(tmp_defaults_1); 1547             Py_INCREF(tmp_defaults_1);
1608 1548
1609 1549
1610             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1); 1550             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1);
1611 1551
n 1612             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1552             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1613             Py_DECREF(tmp_dictset_value); 1553             Py_DECREF(tmp_dictset_value);
1614             if (tmp_res != 0) { 1554             if (tmp_res != 0) {
1615                 assert(ERROR_OCCURRED()); 1555                 assert(ERROR_OCCURRED());
1616 1556
1617                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1557                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1681             nuitka_bool tmp_condition_result_6; 1621             nuitka_bool tmp_condition_result_6;
1682             PyObject *tmp_compexpr_left_1; 1622             PyObject *tmp_compexpr_left_1;
1683             PyObject *tmp_compexpr_right_1; 1623             PyObject *tmp_compexpr_right_1;
1684             CHECK_OBJECT(tmp_class_creation_1__bases); 1624             CHECK_OBJECT(tmp_class_creation_1__bases);
1685             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1625             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1686             tmp_compexpr_right_1 = mod_consts[10]; n 1626             tmp_compexpr_right_1 = mod_consts[9];
1687             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1627             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1688             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1628             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1689                 assert(ERROR_OCCURRED()); 1629                 assert(ERROR_OCCURRED());
1690 1630
1691                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1631                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1701                 goto branch_no_4; 1641                 goto branch_no_4;
1702             } 1642             }
1703             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1643             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1704         } 1644         }
1705         branch_yes_4:; 1645         branch_yes_4:;
n 1706         tmp_dictset_value = mod_consts[10]; n 1646         tmp_dictset_value = mod_consts[9];
1707         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1647         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value);
1708         if (tmp_res != 0) { 1648         if (tmp_res != 0) {
1709             assert(ERROR_OCCURRED()); 1649             assert(ERROR_OCCURRED());
1710 1650
1711             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1651             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1875         PyObject *tmp_level_value_1; 1815         PyObject *tmp_level_value_1;
1876         tmp_name_value_1 = mod_consts[25]; 1816         tmp_name_value_1 = mod_consts[25];
1877         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1817         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1878         tmp_locals_arg_value_1 = Py_None; 1818         tmp_locals_arg_value_1 = Py_None;
1879         tmp_fromlist_value_1 = Py_None; 1819         tmp_fromlist_value_1 = Py_None;
t 1880         tmp_level_value_1 = mod_consts[12]; t 1820         tmp_level_value_1 = mod_consts[11];
1881         frame_2436451561483ead9047c58335a93f90->m_frame.f_lineno = 39; 1821         frame_2436451561483ead9047c58335a93f90->m_frame.f_lineno = 39;
1882         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 1822         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
1883         assert(!(tmp_assign_source_14 == NULL)); 1823         assert(!(tmp_assign_source_14 == NULL));
1884         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14); 1824         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14);
1885     } 1825     }