Construct CallCompiledObjectMethodPosArgsDefaults

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)18693650488.11538461538461257.0CPython 2.766700079240.03846153846155415.94311583281694Nuitka (master)66700124391.96153846153845415.94305634634924Nuitka (develop)66700112543.8846153846154415.9430722094073Nuitka (factory)Construct CallCompiledObjectMethodPosArgsDefaultsTicks Construct CallCompiledObjectMethodPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)18005990788.11538461538461257.0CPython 3.869351738240.03846153846155408.9366094224407Nuitka (master)69351690391.96153846153845408.93667529795215Nuitka (develop)69351762543.8846153846154408.936576484685Nuitka (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_bda53e904a89ac4d2102eac910db3179; 84 static PyCodeObject *codeobj_bda53e904a89ac4d2102eac910db3179;
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_4f03bd4d3abfce360a0e9ff698574622 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0); 90     codeobj_4f03bd4d3abfce360a0e9ff698574622 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0);
91     codeobj_786a7a9a082c1226eca679df64641cab = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0); 91     codeobj_786a7a9a082c1226eca679df64641cab = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0);
92     codeobj_c259e697528c830f1d27953613a59cd6 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_c259e697528c830f1d27953613a59cd6 = 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_bda53e904a89ac4d2102eac910db3179 = 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_bda53e904a89ac4d2102eac910db3179 = 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_c259e697528c830f1d27953613a59cd6 = NULL; 494     static struct Nuitka_FrameObject *cache_frame_c259e697528c830f1d27953613a59cd6 = 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_c259e697528c830f1d27953613a59cd6->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_c259e697528c830f1d27953613a59cd6->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_c259e697528c830f1d27953613a59cd6->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_c259e697528c830f1d27953613a59cd6); 566     RESTORE_FRAME_EXCEPTION(frame_c259e697528c830f1d27953613a59cd6);
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_bda53e904a89ac4d2102eac910db3179, 674         codeobj_bda53e904a89ac4d2102eac910db3179,
735         defaults, 675         defaults,
1157 1097
1158     // Module code. 1098     // Module code.
1159     { 1099     {
1160         PyObject *tmp_assign_source_1; 1100         PyObject *tmp_assign_source_1;
1161         tmp_assign_source_1 = Py_None; 1101         tmp_assign_source_1 = Py_None;
n 1162         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1102         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1163     } 1103     }
1164     { 1104     {
1165         PyObject *tmp_assign_source_2; 1105         PyObject *tmp_assign_source_2;
n 1166         tmp_assign_source_2 = mod_consts[5]; n 1106         tmp_assign_source_2 = mod_consts[4];
1167         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1107         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1168     } 1108     }
1169     { 1109     {
1170         PyObject *tmp_assign_source_3; 1110         PyObject *tmp_assign_source_3;
1171         tmp_assign_source_3 = Py_None; 1111         tmp_assign_source_3 = Py_None;
n 1172         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1112         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1173     } 1113     }
1174     { 1114     {
1175         PyObject *tmp_assign_source_4; 1115         PyObject *tmp_assign_source_4;
1176         tmp_assign_source_4 = PyDict_New(); 1116         tmp_assign_source_4 = PyDict_New();
n 1177         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1117         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1178     } 1118     }
1179     { 1119     {
1180         PyObject *tmp_assign_source_5; 1120         PyObject *tmp_assign_source_5;
1181         { 1121         {
1182             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1122             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1183             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1123             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1184         } 1124         }
1185 1125
1186         assert(!(tmp_assign_source_5 == NULL)); 1126         assert(!(tmp_assign_source_5 == NULL));
n 1187         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1127         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1188     } 1128     }
1189     // Frame without reuse. 1129     // Frame without reuse.
1190     frame_4f03bd4d3abfce360a0e9ff698574622 = MAKE_MODULE_FRAME(codeobj_4f03bd4d3abfce360a0e9ff698574622, module___main__); 1130     frame_4f03bd4d3abfce360a0e9ff698574622 = MAKE_MODULE_FRAME(codeobj_4f03bd4d3abfce360a0e9ff698574622, module___main__);
1191 1131
1192     // Push the new frame as the currently active one, and we should be exclusively 1132     // Push the new frame as the currently active one, and we should be exclusively
1197     // Framed code: 1137     // Framed code:
1198     // Tried code: 1138     // Tried code:
1199     { 1139     {
1200         PyObject *tmp_assign_source_6; 1140         PyObject *tmp_assign_source_6;
1201         PyObject *tmp_dircall_arg1_1; 1141         PyObject *tmp_dircall_arg1_1;
n 1202         tmp_dircall_arg1_1 = mod_consts[10]; n 1142         tmp_dircall_arg1_1 = mod_consts[9];
1203         Py_INCREF(tmp_dircall_arg1_1); 1143         Py_INCREF(tmp_dircall_arg1_1);
1204 1144
1205         { 1145         {
1206             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1146             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1207             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1147             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1237         int tmp_truth_name_1; 1177         int tmp_truth_name_1;
1238         PyObject *tmp_type_arg_1; 1178         PyObject *tmp_type_arg_1;
1239         PyObject *tmp_expression_name_1; 1179         PyObject *tmp_expression_name_1;
1240         PyObject *tmp_subscript_name_1; 1180         PyObject *tmp_subscript_name_1;
1241         PyObject *tmp_bases_name_1; 1181         PyObject *tmp_bases_name_1;
n 1242         tmp_key_name_1 = mod_consts[11]; n 1182         tmp_key_name_1 = mod_consts[10];
1243         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1183         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1244         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1184         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1245         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1185         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1246         assert(!(tmp_res == -1)); 1186         assert(!(tmp_res == -1));
1247         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1187         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1251             goto condexpr_false_1; 1191             goto condexpr_false_1;
1252         } 1192         }
1253         condexpr_true_1:; 1193         condexpr_true_1:;
1254         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1194         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1255         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1195         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1256         tmp_key_name_2 = mod_consts[11]; n 1196         tmp_key_name_2 = mod_consts[10];
1257         \ 1197         \
1258         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2); 1198         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2);
1259         if (tmp_metaclass_name_1 == NULL) { 1199         if (tmp_metaclass_name_1 == NULL) {
1260             tmp_metaclass_name_1 = Py_None; 1200             tmp_metaclass_name_1 = Py_None;
1261         } 1201         }
1283             goto condexpr_false_2; 1223             goto condexpr_false_2;
1284         } 1224         }
1285         condexpr_true_2:; 1225         condexpr_true_2:;
1286         CHECK_OBJECT(tmp_class_creation_1__bases); 1226         CHECK_OBJECT(tmp_class_creation_1__bases);
1287         tmp_expression_name_1 = tmp_class_creation_1__bases; 1227         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1288         tmp_subscript_name_1 = mod_consts[12]; n 1228         tmp_subscript_name_1 = mod_consts[11];
1289         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1229         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1290         if (tmp_type_arg_1 == NULL) { 1230         if (tmp_type_arg_1 == NULL) {
1291             assert(ERROR_OCCURRED()); 1231             assert(ERROR_OCCURRED());
1292 1232
1293             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1233             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1334     } 1274     }
1335     { 1275     {
1336         nuitka_bool tmp_condition_result_3; 1276         nuitka_bool tmp_condition_result_3;
1337         PyObject *tmp_key_name_3; 1277         PyObject *tmp_key_name_3;
1338         PyObject *tmp_dict_arg_name_3; 1278         PyObject *tmp_dict_arg_name_3;
n 1339         tmp_key_name_3 = mod_consts[11]; n 1279         tmp_key_name_3 = mod_consts[10];
1340         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1280         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1341         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1281         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1342         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1282         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1343         assert(!(tmp_res == -1)); 1283         assert(!(tmp_res == -1));
1344         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1284         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1349         } 1289         }
1350     } 1290     }
1351     branch_yes_1:; 1291     branch_yes_1:;
1352     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1292     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1353     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1293     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1354     tmp_dictdel_key = mod_consts[11]; n 1294     tmp_dictdel_key = mod_consts[10];
1355     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1295     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1356     if (tmp_result == false) { 1296     if (tmp_result == false) {
1357         assert(ERROR_OCCURRED()); 1297         assert(ERROR_OCCURRED());
1358 1298
1359         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1299         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1367     { 1307     {
1368         nuitka_bool tmp_condition_result_4; 1308         nuitka_bool tmp_condition_result_4;
1369         PyObject *tmp_expression_name_2; 1309         PyObject *tmp_expression_name_2;
1370         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1310         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1371         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1311         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1372         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[13]); n 1312         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[12]);
1373         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1313         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1374         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1314         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1375             goto branch_yes_2; 1315             goto branch_yes_2;
1376         } else { 1316         } else {
1377             goto branch_no_2; 1317             goto branch_no_2;
1385         PyObject *tmp_args_name_1; 1325         PyObject *tmp_args_name_1;
1386         PyObject *tmp_tuple_element_1; 1326         PyObject *tmp_tuple_element_1;
1387         PyObject *tmp_kwargs_name_1; 1327         PyObject *tmp_kwargs_name_1;
1388         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1328         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1389         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1329         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1390         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[13]); n 1330         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[12]);
1391         if (tmp_called_name_1 == NULL) { 1331         if (tmp_called_name_1 == NULL) {
1392             assert(ERROR_OCCURRED()); 1332             assert(ERROR_OCCURRED());
1393 1333
1394             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1334             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1395 1335
1427         nuitka_bool tmp_condition_result_5; 1367         nuitka_bool tmp_condition_result_5;
1428         PyObject *tmp_operand_name_1; 1368         PyObject *tmp_operand_name_1;
1429         PyObject *tmp_expression_name_4; 1369         PyObject *tmp_expression_name_4;
1430         CHECK_OBJECT(tmp_class_creation_1__prepared); 1370         CHECK_OBJECT(tmp_class_creation_1__prepared);
1431         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1371         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1432         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[14]); n 1372         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[13]);
1433         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1373         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1434         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1374         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1435         if (tmp_res == -1) { 1375         if (tmp_res == -1) {
1436             assert(ERROR_OCCURRED()); 1376             assert(ERROR_OCCURRED());
1437 1377
1458         PyObject *tmp_tuple_element_2; 1398         PyObject *tmp_tuple_element_2;
1459         PyObject *tmp_getattr_target_1; 1399         PyObject *tmp_getattr_target_1;
1460         PyObject *tmp_getattr_attr_1; 1400         PyObject *tmp_getattr_attr_1;
1461         PyObject *tmp_getattr_default_1; 1401         PyObject *tmp_getattr_default_1;
1462         tmp_raise_type_1 = PyExc_TypeError; 1402         tmp_raise_type_1 = PyExc_TypeError;
n 1463         tmp_left_name_1 = mod_consts[15]; n 1403         tmp_left_name_1 = mod_consts[14];
1464         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1404         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1465         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1405         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1466         tmp_getattr_attr_1 = mod_consts[16]; n 1406         tmp_getattr_attr_1 = mod_consts[15];
1467         tmp_getattr_default_1 = mod_consts[17]; 1407         tmp_getattr_default_1 = mod_consts[16];
1468         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1408         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1469         if (tmp_tuple_element_2 == NULL) { 1409         if (tmp_tuple_element_2 == NULL) {
1470             assert(ERROR_OCCURRED()); 1410             assert(ERROR_OCCURRED());
1471 1411
1472             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1412             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1483             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1423             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1484             CHECK_OBJECT(tmp_class_creation_1__prepared); 1424             CHECK_OBJECT(tmp_class_creation_1__prepared);
1485             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1425             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1486             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1426             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1487             assert(!(tmp_expression_name_5 == NULL)); 1427             assert(!(tmp_expression_name_5 == NULL));
n 1488             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[16]); n 1428             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[15]);
1489             Py_DECREF(tmp_expression_name_5); 1429             Py_DECREF(tmp_expression_name_5);
1490             if (tmp_tuple_element_2 == NULL) { 1430             if (tmp_tuple_element_2 == NULL) {
1491                 assert(ERROR_OCCURRED()); 1431                 assert(ERROR_OCCURRED());
1492 1432
1493                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1433                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1545             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1485             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1546             Py_INCREF(tmp_set_locals_1); 1486             Py_INCREF(tmp_set_locals_1);
1547         } 1487         }
1548         // Tried code: 1488         // Tried code:
1549         // Tried code: 1489         // Tried code:
n 1550         tmp_dictset_value = mod_consts[18]; n 1490         tmp_dictset_value = mod_consts[17];
1491         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1492         if (tmp_res != 0) {
1493             assert(ERROR_OCCURRED());
1494  
1495             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1496  
1497  
1498             exception_lineno = 22;
1499  
1500             goto try_except_handler_3;
1501         }
1502         tmp_dictset_value = mod_consts[2];
1551         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1503         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1552         if (tmp_res != 0) { n
1553             assert(ERROR_OCCURRED());
1554  
1555             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1556  
1557  
1558             exception_lineno = 22;
1559  
1560             goto try_except_handler_3;
1561         }
1562         tmp_dictset_value = mod_consts[2];
1563         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1564         if (tmp_res != 0) { 1504         if (tmp_res != 0) {
1565             assert(ERROR_OCCURRED()); 1505             assert(ERROR_OCCURRED());
1566 1506
1567             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1507             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1568 1508
1598         assert(Py_REFCNT(frame_786a7a9a082c1226eca679df64641cab_2) == 2); // Frame stack 1538         assert(Py_REFCNT(frame_786a7a9a082c1226eca679df64641cab_2) == 2); // Frame stack
1599 1539
1600         // Framed code: 1540         // Framed code:
1601         { 1541         {
1602             PyObject *tmp_defaults_1; 1542             PyObject *tmp_defaults_1;
n 1603             tmp_defaults_1 = mod_consts[21]; n 1543             tmp_defaults_1 = mod_consts[20];
1604             Py_INCREF(tmp_defaults_1); 1544             Py_INCREF(tmp_defaults_1);
1605 1545
1606 1546
1607             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1); 1547             tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(tmp_defaults_1);
1608 1548
n 1609             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1549             tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1610             Py_DECREF(tmp_dictset_value); 1550             Py_DECREF(tmp_dictset_value);
1611             if (tmp_res != 0) { 1551             if (tmp_res != 0) {
1612                 assert(ERROR_OCCURRED()); 1552                 assert(ERROR_OCCURRED());
1613 1553
1614                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1554                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1678             nuitka_bool tmp_condition_result_6; 1618             nuitka_bool tmp_condition_result_6;
1679             PyObject *tmp_compexpr_left_1; 1619             PyObject *tmp_compexpr_left_1;
1680             PyObject *tmp_compexpr_right_1; 1620             PyObject *tmp_compexpr_right_1;
1681             CHECK_OBJECT(tmp_class_creation_1__bases); 1621             CHECK_OBJECT(tmp_class_creation_1__bases);
1682             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1622             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1683             tmp_compexpr_right_1 = mod_consts[10]; n 1623             tmp_compexpr_right_1 = mod_consts[9];
1684             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1624             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1685             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1625             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1686                 assert(ERROR_OCCURRED()); 1626                 assert(ERROR_OCCURRED());
1687 1627
1688                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1628                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1698                 goto branch_no_4; 1638                 goto branch_no_4;
1699             } 1639             }
1700             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1640             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1701         } 1641         }
1702         branch_yes_4:; 1642         branch_yes_4:;
n 1703         tmp_dictset_value = mod_consts[10]; n 1643         tmp_dictset_value = mod_consts[9];
1704         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1644         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value);
1705         if (tmp_res != 0) { 1645         if (tmp_res != 0) {
1706             assert(ERROR_OCCURRED()); 1646             assert(ERROR_OCCURRED());
1707 1647
1708             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1648             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1869         PyObject *tmp_level_name_1; 1809         PyObject *tmp_level_name_1;
1870         tmp_name_name_1 = mod_consts[25]; 1810         tmp_name_name_1 = mod_consts[25];
1871         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1811         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1872         tmp_locals_arg_name_1 = Py_None; 1812         tmp_locals_arg_name_1 = Py_None;
1873         tmp_fromlist_name_1 = Py_None; 1813         tmp_fromlist_name_1 = Py_None;
t 1874         tmp_level_name_1 = mod_consts[12]; t 1814         tmp_level_name_1 = mod_consts[11];
1875         frame_4f03bd4d3abfce360a0e9ff698574622->m_frame.f_lineno = 39; 1815         frame_4f03bd4d3abfce360a0e9ff698574622->m_frame.f_lineno = 39;
1876         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); 1816         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);
1877         assert(!(tmp_assign_source_14 == NULL)); 1817         assert(!(tmp_assign_source_14 == NULL));
1878         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14); 1818         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14);
1879     } 1819     }