Construct CallCompiledObjectMethodPosArgsDefaults

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)18693650488.11538461538461257.0CPython 2.761702288240.03846153846155422.5498032307599Nuitka (master)66700124391.96153846153845415.94305634634924Nuitka (develop)66700124543.8846153846154415.94305634634924Nuitka (factory)Construct CallCompiledObjectMethodPosArgsDefaultsTicks Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)18005990788.11538461538461257.0CPython 3.866653294240.03846153846155412.6399714758437Nuitka (master)69351690391.96153846153845408.93667529795215Nuitka (develop)69351690543.8846153846154408.93667529795215Nuitka (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_dc50f96c5312ef4f7a8222b129b17b2f; 84 static PyCodeObject *codeobj_dc50f96c5312ef4f7a8222b129b17b2f;
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_6707e17110fc9431c93a348b2eb46113 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0); 90     codeobj_6707e17110fc9431c93a348b2eb46113 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0);
91     codeobj_37e9c8149709b91b4faad9b58e1f00e7 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0); 91     codeobj_37e9c8149709b91b4faad9b58e1f00e7 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0);
92     codeobj_3779509d6adbb0247bab22aa2f842a06 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_3779509d6adbb0247bab22aa2f842a06 = 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_dc50f96c5312ef4f7a8222b129b17b2f = 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_dc50f96c5312ef4f7a8222b129b17b2f = 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
491     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 491     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
492     PyObject *exception_type = NULL; 492     PyObject *exception_type = NULL;
493     PyObject *exception_value = NULL; 493     PyObject *exception_value = NULL;
494     PyTracebackObject *exception_tb = NULL; 494     PyTracebackObject *exception_tb = NULL;
495     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 495     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 496     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
497     static struct Nuitka_FrameObject *cache_frame_3779509d6adbb0247bab22aa2f842a06 = NULL; 496     static struct Nuitka_FrameObject *cache_frame_3779509d6adbb0247bab22aa2f842a06 = NULL;
498     PyObject *tmp_return_value = NULL; 497     PyObject *tmp_return_value = NULL;
499     PyObject *exception_keeper_type_1; 498     PyObject *exception_keeper_type_1;
500     PyObject *exception_keeper_value_1; 499     PyObject *exception_keeper_value_1;
501     PyTracebackObject *exception_keeper_tb_1; 500     PyTracebackObject *exception_keeper_tb_1;
561             type_description_1 = "o"; 560             type_description_1 = "o";
562             goto frame_exception_exit_1; 561             goto frame_exception_exit_1;
563         } 562         }
564         assert(var_inst == NULL); 563         assert(var_inst == NULL);
565         var_inst = tmp_assign_source_1; 564         var_inst = tmp_assign_source_1;
n 566     } n
567     {
568         PyObject *tmp_called_instance_1;
569         PyObject *tmp_call_result_1;
570         CHECK_OBJECT(var_inst);
571         tmp_called_instance_1 = var_inst;
572         frame_3779509d6adbb0247bab22aa2f842a06->m_frame.f_lineno = 32;
573         tmp_call_result_1 = CALL_METHOD_NO_ARGS(tmp_called_instance_1, mod_consts[3]);
574         if (tmp_call_result_1 == NULL) {
575             assert(ERROR_OCCURRED());
576  
577             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
578  
579  
580             exception_lineno = 32;
581             type_description_1 = "o";
582             goto frame_exception_exit_1;
583         }
584         Py_DECREF(tmp_call_result_1);
585     }
586     {
587         PyObject *tmp_called_instance_2;
588         PyObject *tmp_call_result_2;
589         CHECK_OBJECT(var_inst);
590         tmp_called_instance_2 = var_inst;
591         frame_3779509d6adbb0247bab22aa2f842a06->m_frame.f_lineno = 33;
592         tmp_call_result_2 = CALL_METHOD_NO_ARGS(tmp_called_instance_2, mod_consts[3]);
593         if (tmp_call_result_2 == NULL) {
594             assert(ERROR_OCCURRED());
595  
596             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
597  
598  
599             exception_lineno = 33;
600             type_description_1 = "o";
601             goto frame_exception_exit_1;
602         }
603         Py_DECREF(tmp_call_result_2);
604     }
605     {
606         PyObject *tmp_called_instance_3;
607         PyObject *tmp_call_result_3;
608         CHECK_OBJECT(var_inst);
609         tmp_called_instance_3 = var_inst;
610         frame_3779509d6adbb0247bab22aa2f842a06->m_frame.f_lineno = 34;
611         tmp_call_result_3 = CALL_METHOD_NO_ARGS(tmp_called_instance_3, mod_consts[3]);
612         if (tmp_call_result_3 == NULL) {
613             assert(ERROR_OCCURRED());
614  
615             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
616  
617  
618             exception_lineno = 34;
619             type_description_1 = "o";
620             goto frame_exception_exit_1;
621         }
622         Py_DECREF(tmp_call_result_3);
623     } 565     }
624 566
625 #if 0 567 #if 0
626     RESTORE_FRAME_EXCEPTION(frame_3779509d6adbb0247bab22aa2f842a06); 568     RESTORE_FRAME_EXCEPTION(frame_3779509d6adbb0247bab22aa2f842a06);
627 #endif 569 #endif
691     exception_type = NULL; 633     exception_type = NULL;
692     exception_value = NULL; 634     exception_value = NULL;
693     exception_tb = NULL; 635     exception_tb = NULL;
694     exception_lineno = 0; 636     exception_lineno = 0;
695 637
n 696     Py_XDECREF(var_inst); n
697     var_inst = NULL;
698     // Re-raise. 638     // Re-raise.
699     exception_type = exception_keeper_type_1; 639     exception_type = exception_keeper_type_1;
700     exception_value = exception_keeper_value_1; 640     exception_value = exception_keeper_value_1;
701     exception_tb = exception_keeper_tb_1; 641     exception_tb = exception_keeper_tb_1;
702     exception_lineno = exception_keeper_lineno_1; 642     exception_lineno = exception_keeper_lineno_1;
727 667
728 668
729 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method(PyObject *defaults) { 669 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method(PyObject *defaults) {
730     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 670     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
731         impl___main__$$$function__1_compiled_method, 671         impl___main__$$$function__1_compiled_method,
n 732         mod_consts[3], n 672         mod_consts[21],
733 #if PYTHON_VERSION >= 0x300 673 #if PYTHON_VERSION >= 0x300
734         mod_consts[22], 674         mod_consts[22],
735 #endif 675 #endif
736         codeobj_dc50f96c5312ef4f7a8222b129b17b2f, 676         codeobj_dc50f96c5312ef4f7a8222b129b17b2f,
737         defaults, 677         defaults,
1159 1099
1160     // Module code. 1100     // Module code.
1161     { 1101     {
1162         PyObject *tmp_assign_source_1; 1102         PyObject *tmp_assign_source_1;
1163         tmp_assign_source_1 = Py_None; 1103         tmp_assign_source_1 = Py_None;
n 1164         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1104         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1165     } 1105     }
1166     { 1106     {
1167         PyObject *tmp_assign_source_2; 1107         PyObject *tmp_assign_source_2;
n 1168         tmp_assign_source_2 = mod_consts[5]; n 1108         tmp_assign_source_2 = mod_consts[4];
1169         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1109         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1170     } 1110     }
1171     { 1111     {
1172         PyObject *tmp_assign_source_3; 1112         PyObject *tmp_assign_source_3;
1173         tmp_assign_source_3 = Py_None; 1113         tmp_assign_source_3 = Py_None;
n 1174         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1114         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1175     } 1115     }
1176     { 1116     {
1177         PyObject *tmp_assign_source_4; 1117         PyObject *tmp_assign_source_4;
1178         tmp_assign_source_4 = PyDict_New(); 1118         tmp_assign_source_4 = PyDict_New();
n 1179         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1119         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1180     } 1120     }
1181     { 1121     {
1182         PyObject *tmp_assign_source_5; 1122         PyObject *tmp_assign_source_5;
1183         { 1123         {
1184             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1124             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1185             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1125             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1186         } 1126         }
1187 1127
1188         assert(!(tmp_assign_source_5 == NULL)); 1128         assert(!(tmp_assign_source_5 == NULL));
n 1189         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1129         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1190     } 1130     }
1191     // Frame without reuse. 1131     // Frame without reuse.
1192     frame_6707e17110fc9431c93a348b2eb46113 = MAKE_MODULE_FRAME(codeobj_6707e17110fc9431c93a348b2eb46113, module___main__); 1132     frame_6707e17110fc9431c93a348b2eb46113 = MAKE_MODULE_FRAME(codeobj_6707e17110fc9431c93a348b2eb46113, module___main__);
1193 1133
1194     // Push the new frame as the currently active one, and we should be exclusively 1134     // Push the new frame as the currently active one, and we should be exclusively
1199     // Framed code: 1139     // Framed code:
1200     // Tried code: 1140     // Tried code:
1201     { 1141     {
1202         PyObject *tmp_assign_source_6; 1142         PyObject *tmp_assign_source_6;
1203         PyObject *tmp_dircall_arg1_1; 1143         PyObject *tmp_dircall_arg1_1;
n 1204         tmp_dircall_arg1_1 = mod_consts[10]; n 1144         tmp_dircall_arg1_1 = mod_consts[9];
1205         Py_INCREF(tmp_dircall_arg1_1); 1145         Py_INCREF(tmp_dircall_arg1_1);
1206 1146
1207         { 1147         {
1208             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1148             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1209             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1149             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1239         int tmp_truth_name_1; 1179         int tmp_truth_name_1;
1240         PyObject *tmp_type_arg_1; 1180         PyObject *tmp_type_arg_1;
1241         PyObject *tmp_expression_name_1; 1181         PyObject *tmp_expression_name_1;
1242         PyObject *tmp_subscript_name_1; 1182         PyObject *tmp_subscript_name_1;
1243         PyObject *tmp_bases_name_1; 1183         PyObject *tmp_bases_name_1;
n 1244         tmp_key_name_1 = mod_consts[11]; n 1184         tmp_key_name_1 = mod_consts[10];
1245         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1185         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1246         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1186         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1247         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1187         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1248         assert(!(tmp_res == -1)); 1188         assert(!(tmp_res == -1));
1249         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1189         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1253             goto condexpr_false_1; 1193             goto condexpr_false_1;
1254         } 1194         }
1255         condexpr_true_1:; 1195         condexpr_true_1:;
1256         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1196         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1257         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1197         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1258         tmp_key_name_2 = mod_consts[11]; n 1198         tmp_key_name_2 = mod_consts[10];
1259         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2); 1199         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2);
1260         if (tmp_metaclass_name_1 == NULL) { 1200         if (tmp_metaclass_name_1 == NULL) {
1261             assert(ERROR_OCCURRED()); 1201             assert(ERROR_OCCURRED());
1262 1202
1263             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1203             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1288             goto condexpr_false_2; 1228             goto condexpr_false_2;
1289         } 1229         }
1290         condexpr_true_2:; 1230         condexpr_true_2:;
1291         CHECK_OBJECT(tmp_class_creation_1__bases); 1231         CHECK_OBJECT(tmp_class_creation_1__bases);
1292         tmp_expression_name_1 = tmp_class_creation_1__bases; 1232         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1293         tmp_subscript_name_1 = mod_consts[12]; n 1233         tmp_subscript_name_1 = mod_consts[11];
1294         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1234         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1295         if (tmp_type_arg_1 == NULL) { 1235         if (tmp_type_arg_1 == NULL) {
1296             assert(ERROR_OCCURRED()); 1236             assert(ERROR_OCCURRED());
1297 1237
1298             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1238             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1339     } 1279     }
1340     { 1280     {
1341         nuitka_bool tmp_condition_result_3; 1281         nuitka_bool tmp_condition_result_3;
1342         PyObject *tmp_key_name_3; 1282         PyObject *tmp_key_name_3;
1343         PyObject *tmp_dict_arg_name_3; 1283         PyObject *tmp_dict_arg_name_3;
n 1344         tmp_key_name_3 = mod_consts[11]; n 1284         tmp_key_name_3 = mod_consts[10];
1345         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1285         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1346         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1286         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1347         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1287         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1348         assert(!(tmp_res == -1)); 1288         assert(!(tmp_res == -1));
1349         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1289         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1354         } 1294         }
1355     } 1295     }
1356     branch_yes_1:; 1296     branch_yes_1:;
1357     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1297     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1358     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1298     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1359     tmp_dictdel_key = mod_consts[11]; n 1299     tmp_dictdel_key = mod_consts[10];
1360     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1300     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1361     if (tmp_result == false) { 1301     if (tmp_result == false) {
1362         assert(ERROR_OCCURRED()); 1302         assert(ERROR_OCCURRED());
1363 1303
1364         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1304         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1372     { 1312     {
1373         nuitka_bool tmp_condition_result_4; 1313         nuitka_bool tmp_condition_result_4;
1374         PyObject *tmp_expression_name_2; 1314         PyObject *tmp_expression_name_2;
1375         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1315         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1376         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1316         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1377         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[13]); n 1317         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[12]);
1378         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1318         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1379         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1319         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1380             goto branch_yes_2; 1320             goto branch_yes_2;
1381         } else { 1321         } else {
1382             goto branch_no_2; 1322             goto branch_no_2;
1390         PyObject *tmp_args_name_1; 1330         PyObject *tmp_args_name_1;
1391         PyObject *tmp_tuple_element_1; 1331         PyObject *tmp_tuple_element_1;
1392         PyObject *tmp_kwargs_name_1; 1332         PyObject *tmp_kwargs_name_1;
1393         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1333         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1394         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1334         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1395         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[13]); n 1335         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[12]);
1396         if (tmp_called_name_1 == NULL) { 1336         if (tmp_called_name_1 == NULL) {
1397             assert(ERROR_OCCURRED()); 1337             assert(ERROR_OCCURRED());
1398 1338
1399             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1339             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1400 1340
1432         nuitka_bool tmp_condition_result_5; 1372         nuitka_bool tmp_condition_result_5;
1433         PyObject *tmp_operand_name_1; 1373         PyObject *tmp_operand_name_1;
1434         PyObject *tmp_expression_name_4; 1374         PyObject *tmp_expression_name_4;
1435         CHECK_OBJECT(tmp_class_creation_1__prepared); 1375         CHECK_OBJECT(tmp_class_creation_1__prepared);
1436         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1376         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1437         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[14]); n 1377         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[13]);
1438         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1378         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1439         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1379         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1440         if (tmp_res == -1) { 1380         if (tmp_res == -1) {
1441             assert(ERROR_OCCURRED()); 1381             assert(ERROR_OCCURRED());
1442 1382
1463         PyObject *tmp_tuple_element_2; 1403         PyObject *tmp_tuple_element_2;
1464         PyObject *tmp_getattr_target_1; 1404         PyObject *tmp_getattr_target_1;
1465         PyObject *tmp_getattr_attr_1; 1405         PyObject *tmp_getattr_attr_1;
1466         PyObject *tmp_getattr_default_1; 1406         PyObject *tmp_getattr_default_1;
1467         tmp_raise_type_1 = PyExc_TypeError; 1407         tmp_raise_type_1 = PyExc_TypeError;
n 1468         tmp_left_name_1 = mod_consts[15]; n 1408         tmp_left_name_1 = mod_consts[14];
1469         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1409         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1470         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1410         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1471         tmp_getattr_attr_1 = mod_consts[16]; n 1411         tmp_getattr_attr_1 = mod_consts[15];
1472         tmp_getattr_default_1 = mod_consts[17]; 1412         tmp_getattr_default_1 = mod_consts[16];
1473         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1413         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1474         if (tmp_tuple_element_2 == NULL) { 1414         if (tmp_tuple_element_2 == NULL) {
1475             assert(ERROR_OCCURRED()); 1415             assert(ERROR_OCCURRED());
1476 1416
1477             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1417             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1488             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1428             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1489             CHECK_OBJECT(tmp_class_creation_1__prepared); 1429             CHECK_OBJECT(tmp_class_creation_1__prepared);
1490             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1430             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1491             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1431             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1492             assert(!(tmp_expression_name_5 == NULL)); 1432             assert(!(tmp_expression_name_5 == NULL));
n 1493             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[16]); n 1433             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[15]);
1494             Py_DECREF(tmp_expression_name_5); 1434             Py_DECREF(tmp_expression_name_5);
1495             if (tmp_tuple_element_2 == NULL) { 1435             if (tmp_tuple_element_2 == NULL) {
1496                 assert(ERROR_OCCURRED()); 1436                 assert(ERROR_OCCURRED());
1497 1437
1498                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1438                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1550             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1490             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1551             Py_INCREF(tmp_set_locals_1); 1491             Py_INCREF(tmp_set_locals_1);
1552         } 1492         }
1553         // Tried code: 1493         // Tried code:
1554         // Tried code: 1494         // Tried code:
n 1555         tmp_dictset_value = mod_consts[18]; n 1495         tmp_dictset_value = mod_consts[17];
1496         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1497         if (tmp_res != 0) {
1498             assert(ERROR_OCCURRED());
1499  
1500             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1501  
1502  
1503             exception_lineno = 22;
1504  
1505             goto try_except_handler_3;
1506         }
1507         tmp_dictset_value = mod_consts[2];
1556         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1508         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1557         if (tmp_res != 0) { n
1558             assert(ERROR_OCCURRED());
1559  
1560             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1561  
1562  
1563             exception_lineno = 22;
1564  
1565             goto try_except_handler_3;
1566         }
1567         tmp_dictset_value = mod_consts[2];
1568         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1569         if (tmp_res != 0) { 1509         if (tmp_res != 0) {
1570             assert(ERROR_OCCURRED()); 1510             assert(ERROR_OCCURRED());
1571 1511
1572             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1512             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1573 1513
1603         assert(Py_REFCNT(frame_37e9c8149709b91b4faad9b58e1f00e7_2) == 2); // Frame stack 1543         assert(Py_REFCNT(frame_37e9c8149709b91b4faad9b58e1f00e7_2) == 2); // Frame stack
1604 1544
1605         // Framed code: 1545         // Framed code:
1606         { 1546         {
1607             PyObject *tmp_defaults_1; 1547             PyObject *tmp_defaults_1;
n 1608             tmp_defaults_1 = mod_consts[21]; n 1548             tmp_defaults_1 = mod_consts[20];
1609             Py_INCREF(tmp_defaults_1); 1549             Py_INCREF(tmp_defaults_1);
1610 1550
1611 1551
1612             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1); 1552             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1);
1613 1553
n 1614             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1554             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1615             Py_DECREF(tmp_dictset_value); 1555             Py_DECREF(tmp_dictset_value);
1616             if (tmp_res != 0) { 1556             if (tmp_res != 0) {
1617                 assert(ERROR_OCCURRED()); 1557                 assert(ERROR_OCCURRED());
1618 1558
1619                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1559                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1683             nuitka_bool tmp_condition_result_6; 1623             nuitka_bool tmp_condition_result_6;
1684             PyObject *tmp_compexpr_left_1; 1624             PyObject *tmp_compexpr_left_1;
1685             PyObject *tmp_compexpr_right_1; 1625             PyObject *tmp_compexpr_right_1;
1686             CHECK_OBJECT(tmp_class_creation_1__bases); 1626             CHECK_OBJECT(tmp_class_creation_1__bases);
1687             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1627             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1688             tmp_compexpr_right_1 = mod_consts[10]; n 1628             tmp_compexpr_right_1 = mod_consts[9];
1689             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1629             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1690             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1630             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1691                 assert(ERROR_OCCURRED()); 1631                 assert(ERROR_OCCURRED());
1692 1632
1693                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1633                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1703                 goto branch_no_4; 1643                 goto branch_no_4;
1704             } 1644             }
1705             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1645             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1706         } 1646         }
1707         branch_yes_4:; 1647         branch_yes_4:;
n 1708         tmp_dictset_value = mod_consts[10]; n 1648         tmp_dictset_value = mod_consts[9];
1709         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1649         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value);
1710         if (tmp_res != 0) { 1650         if (tmp_res != 0) {
1711             assert(ERROR_OCCURRED()); 1651             assert(ERROR_OCCURRED());
1712 1652
1713             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1653             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1874         PyObject *tmp_level_name_1; 1814         PyObject *tmp_level_name_1;
1875         tmp_name_name_1 = mod_consts[25]; 1815         tmp_name_name_1 = mod_consts[25];
1876         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1816         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1877         tmp_locals_arg_name_1 = Py_None; 1817         tmp_locals_arg_name_1 = Py_None;
1878         tmp_fromlist_name_1 = Py_None; 1818         tmp_fromlist_name_1 = Py_None;
t 1879         tmp_level_name_1 = mod_consts[12]; t 1819         tmp_level_name_1 = mod_consts[11];
1880         frame_6707e17110fc9431c93a348b2eb46113->m_frame.f_lineno = 39; 1820         frame_6707e17110fc9431c93a348b2eb46113->m_frame.f_lineno = 39;
1881         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); 1821         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);
1882         assert(!(tmp_assign_source_14 == NULL)); 1822         assert(!(tmp_assign_source_14 == NULL));
1883         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14); 1823         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14);
1884     } 1824     }