Construct CallCompiledObjectMethodNoArgs

Performance Diagrams

Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)10574293388.11538461538461257.0CPython 2.724052307240.03846153846155447.90647375424646Nuitka (master)27700081391.96153846153845439.3818277147801Nuitka (develop)27700081543.8846153846154439.3818277147801Nuitka (factory)Construct CallCompiledObjectMethodNoArgsTicks Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)9320961588.95192307692307257.0CPython 3.827053221242.31730769230768432.3924501037465Nuitka (master)28701932395.6826923076923428.0214219336955Nuitka (develop)28701932549.0480769230769428.0214219336955Nuitka (factory)Construct CallCompiledObjectMethodNoArgsTicks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self):
        return self

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):
        return self

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 32  
33     inst.compiled_method() 33  
34     inst.compiled_method() 34  
35 35
36 # construct_alternative 36 # construct_alternative
t 37   t 37     pass
38   38 # construct_end
39 39
40 import itertools 40 import itertools
41 for x in itertools.repeat(None, 50000): 41 for x in itertools.repeat(None, 50000):
42     calledRepeatedly() 42     calledRepeatedly()
43 43

Context Diff of Generated Code


Construct
Baseline
84 static PyCodeObject *codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7; 84 static PyCodeObject *codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7;
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_fe4d86ca1ac4455c93b29af457e75e09 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0); 90     codeobj_fe4d86ca1ac4455c93b29af457e75e09 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_c2733453fcf1184197bce491a864390f = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0); 91     codeobj_c2733453fcf1184197bce491a864390f = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_acad2c70a2c0548ed849ef4260ec5d58 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0); 92     codeobj_acad2c70a2c0548ed849ef4260ec5d58 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0);
n 93     codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[33], NULL, 1, 0, 0); n 93     codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[20], mod_consts[33], NULL, 1, 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
454     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 454     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
455     PyObject *exception_type = NULL; 455     PyObject *exception_type = NULL;
456     PyObject *exception_value = NULL; 456     PyObject *exception_value = NULL;
457     PyTracebackObject *exception_tb = NULL; 457     PyTracebackObject *exception_tb = NULL;
458     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 458     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 459     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
460     static struct Nuitka_FrameObject *cache_frame_acad2c70a2c0548ed849ef4260ec5d58 = NULL; 459     static struct Nuitka_FrameObject *cache_frame_acad2c70a2c0548ed849ef4260ec5d58 = NULL;
461     PyObject *tmp_return_value = NULL; 460     PyObject *tmp_return_value = NULL;
462     PyObject *exception_keeper_type_1; 461     PyObject *exception_keeper_type_1;
463     PyObject *exception_keeper_value_1; 462     PyObject *exception_keeper_value_1;
464     PyTracebackObject *exception_keeper_tb_1; 463     PyTracebackObject *exception_keeper_tb_1;
524             type_description_1 = "o"; 523             type_description_1 = "o";
525             goto frame_exception_exit_1; 524             goto frame_exception_exit_1;
526         } 525         }
527         assert(var_inst == NULL); 526         assert(var_inst == NULL);
528         var_inst = tmp_assign_source_1; 527         var_inst = tmp_assign_source_1;
n 529     } n
530     {
531         PyObject *tmp_called_instance_1;
532         PyObject *tmp_call_result_1;
533         CHECK_OBJECT(var_inst);
534         tmp_called_instance_1 = var_inst;
535         frame_acad2c70a2c0548ed849ef4260ec5d58->m_frame.f_lineno = 32;
536         tmp_call_result_1 = CALL_METHOD_NO_ARGS(tmp_called_instance_1, mod_consts[3]);
537         if (tmp_call_result_1 == NULL) {
538             assert(ERROR_OCCURRED());
539  
540             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
541  
542  
543             exception_lineno = 32;
544             type_description_1 = "o";
545             goto frame_exception_exit_1;
546         }
547         Py_DECREF(tmp_call_result_1);
548     }
549     {
550         PyObject *tmp_called_instance_2;
551         PyObject *tmp_call_result_2;
552         CHECK_OBJECT(var_inst);
553         tmp_called_instance_2 = var_inst;
554         frame_acad2c70a2c0548ed849ef4260ec5d58->m_frame.f_lineno = 33;
555         tmp_call_result_2 = CALL_METHOD_NO_ARGS(tmp_called_instance_2, mod_consts[3]);
556         if (tmp_call_result_2 == NULL) {
557             assert(ERROR_OCCURRED());
558  
559             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
560  
561  
562             exception_lineno = 33;
563             type_description_1 = "o";
564             goto frame_exception_exit_1;
565         }
566         Py_DECREF(tmp_call_result_2);
567     }
568     {
569         PyObject *tmp_called_instance_3;
570         PyObject *tmp_call_result_3;
571         CHECK_OBJECT(var_inst);
572         tmp_called_instance_3 = var_inst;
573         frame_acad2c70a2c0548ed849ef4260ec5d58->m_frame.f_lineno = 34;
574         tmp_call_result_3 = CALL_METHOD_NO_ARGS(tmp_called_instance_3, mod_consts[3]);
575         if (tmp_call_result_3 == NULL) {
576             assert(ERROR_OCCURRED());
577  
578             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
579  
580  
581             exception_lineno = 34;
582             type_description_1 = "o";
583             goto frame_exception_exit_1;
584         }
585         Py_DECREF(tmp_call_result_3);
586     } 528     }
587 529
588 #if 0 530 #if 0
589     RESTORE_FRAME_EXCEPTION(frame_acad2c70a2c0548ed849ef4260ec5d58); 531     RESTORE_FRAME_EXCEPTION(frame_acad2c70a2c0548ed849ef4260ec5d58);
590 #endif 532 #endif
654     exception_type = NULL; 596     exception_type = NULL;
655     exception_value = NULL; 597     exception_value = NULL;
656     exception_tb = NULL; 598     exception_tb = NULL;
657     exception_lineno = 0; 599     exception_lineno = 0;
658 600
n 659     Py_XDECREF(var_inst); n
660     var_inst = NULL;
661     // Re-raise. 601     // Re-raise.
662     exception_type = exception_keeper_type_1; 602     exception_type = exception_keeper_type_1;
663     exception_value = exception_keeper_value_1; 603     exception_value = exception_keeper_value_1;
664     exception_tb = exception_keeper_tb_1; 604     exception_tb = exception_keeper_tb_1;
665     exception_lineno = exception_keeper_lineno_1; 605     exception_lineno = exception_keeper_lineno_1;
690 630
691 631
692 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 632 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
693     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 633     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
694         impl___main__$$$function__1_compiled_method, 634         impl___main__$$$function__1_compiled_method,
n 695         mod_consts[3], n 635         mod_consts[20],
696 #if PYTHON_VERSION >= 0x300 636 #if PYTHON_VERSION >= 0x300
697         mod_consts[21], 637         mod_consts[21],
698 #endif 638 #endif
699         codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7, 639         codeobj_21f7a1a7a1270f1bbd23bc83dd3e47d7,
700         NULL, 640         NULL,
1122 1062
1123     // Module code. 1063     // Module code.
1124     { 1064     {
1125         PyObject *tmp_assign_source_1; 1065         PyObject *tmp_assign_source_1;
1126         tmp_assign_source_1 = Py_None; 1066         tmp_assign_source_1 = Py_None;
n 1127         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1067         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1128     } 1068     }
1129     { 1069     {
1130         PyObject *tmp_assign_source_2; 1070         PyObject *tmp_assign_source_2;
n 1131         tmp_assign_source_2 = mod_consts[5]; n 1071         tmp_assign_source_2 = mod_consts[4];
1132         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1072         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1133     } 1073     }
1134     { 1074     {
1135         PyObject *tmp_assign_source_3; 1075         PyObject *tmp_assign_source_3;
1136         tmp_assign_source_3 = Py_None; 1076         tmp_assign_source_3 = Py_None;
n 1137         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1077         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1138     } 1078     }
1139     { 1079     {
1140         PyObject *tmp_assign_source_4; 1080         PyObject *tmp_assign_source_4;
1141         tmp_assign_source_4 = PyDict_New(); 1081         tmp_assign_source_4 = PyDict_New();
n 1142         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1082         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1143     } 1083     }
1144     { 1084     {
1145         PyObject *tmp_assign_source_5; 1085         PyObject *tmp_assign_source_5;
1146         { 1086         {
1147             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1087             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1148             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1088             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1149         } 1089         }
1150 1090
1151         assert(!(tmp_assign_source_5 == NULL)); 1091         assert(!(tmp_assign_source_5 == NULL));
n 1152         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1092         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1153     } 1093     }
1154     // Frame without reuse. 1094     // Frame without reuse.
1155     frame_fe4d86ca1ac4455c93b29af457e75e09 = MAKE_MODULE_FRAME(codeobj_fe4d86ca1ac4455c93b29af457e75e09, module___main__); 1095     frame_fe4d86ca1ac4455c93b29af457e75e09 = MAKE_MODULE_FRAME(codeobj_fe4d86ca1ac4455c93b29af457e75e09, module___main__);
1156 1096
1157     // Push the new frame as the currently active one, and we should be exclusively 1097     // Push the new frame as the currently active one, and we should be exclusively
1162     // Framed code: 1102     // Framed code:
1163     // Tried code: 1103     // Tried code:
1164     { 1104     {
1165         PyObject *tmp_assign_source_6; 1105         PyObject *tmp_assign_source_6;
1166         PyObject *tmp_dircall_arg1_1; 1106         PyObject *tmp_dircall_arg1_1;
n 1167         tmp_dircall_arg1_1 = mod_consts[10]; n 1107         tmp_dircall_arg1_1 = mod_consts[9];
1168         Py_INCREF(tmp_dircall_arg1_1); 1108         Py_INCREF(tmp_dircall_arg1_1);
1169 1109
1170         { 1110         {
1171             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1111             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1172             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1112             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1202         int tmp_truth_name_1; 1142         int tmp_truth_name_1;
1203         PyObject *tmp_type_arg_1; 1143         PyObject *tmp_type_arg_1;
1204         PyObject *tmp_expression_name_1; 1144         PyObject *tmp_expression_name_1;
1205         PyObject *tmp_subscript_name_1; 1145         PyObject *tmp_subscript_name_1;
1206         PyObject *tmp_bases_name_1; 1146         PyObject *tmp_bases_name_1;
n 1207         tmp_key_name_1 = mod_consts[11]; n 1147         tmp_key_name_1 = mod_consts[10];
1208         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1148         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1209         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1149         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1210         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1150         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1211         assert(!(tmp_res == -1)); 1151         assert(!(tmp_res == -1));
1212         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1152         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1216             goto condexpr_false_1; 1156             goto condexpr_false_1;
1217         } 1157         }
1218         condexpr_true_1:; 1158         condexpr_true_1:;
1219         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1159         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1220         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1160         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1221         tmp_key_name_2 = mod_consts[11]; n 1161         tmp_key_name_2 = mod_consts[10];
1222         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2); 1162         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2);
1223         if (tmp_metaclass_name_1 == NULL) { 1163         if (tmp_metaclass_name_1 == NULL) {
1224             assert(ERROR_OCCURRED()); 1164             assert(ERROR_OCCURRED());
1225 1165
1226             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1166             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1251             goto condexpr_false_2; 1191             goto condexpr_false_2;
1252         } 1192         }
1253         condexpr_true_2:; 1193         condexpr_true_2:;
1254         CHECK_OBJECT(tmp_class_creation_1__bases); 1194         CHECK_OBJECT(tmp_class_creation_1__bases);
1255         tmp_expression_name_1 = tmp_class_creation_1__bases; 1195         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1256         tmp_subscript_name_1 = mod_consts[12]; n 1196         tmp_subscript_name_1 = mod_consts[11];
1257         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1197         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1258         if (tmp_type_arg_1 == NULL) { 1198         if (tmp_type_arg_1 == NULL) {
1259             assert(ERROR_OCCURRED()); 1199             assert(ERROR_OCCURRED());
1260 1200
1261             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1201             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1302     } 1242     }
1303     { 1243     {
1304         nuitka_bool tmp_condition_result_3; 1244         nuitka_bool tmp_condition_result_3;
1305         PyObject *tmp_key_name_3; 1245         PyObject *tmp_key_name_3;
1306         PyObject *tmp_dict_arg_name_3; 1246         PyObject *tmp_dict_arg_name_3;
n 1307         tmp_key_name_3 = mod_consts[11]; n 1247         tmp_key_name_3 = mod_consts[10];
1308         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1248         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1309         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1249         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1310         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1250         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1311         assert(!(tmp_res == -1)); 1251         assert(!(tmp_res == -1));
1312         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1252         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1317         } 1257         }
1318     } 1258     }
1319     branch_yes_1:; 1259     branch_yes_1:;
1320     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1260     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1321     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1261     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1322     tmp_dictdel_key = mod_consts[11]; n 1262     tmp_dictdel_key = mod_consts[10];
1323     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1263     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1324     if (tmp_result == false) { 1264     if (tmp_result == false) {
1325         assert(ERROR_OCCURRED()); 1265         assert(ERROR_OCCURRED());
1326 1266
1327         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1267         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1335     { 1275     {
1336         nuitka_bool tmp_condition_result_4; 1276         nuitka_bool tmp_condition_result_4;
1337         PyObject *tmp_expression_name_2; 1277         PyObject *tmp_expression_name_2;
1338         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1278         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1339         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1279         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1340         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[13]); n 1280         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[12]);
1341         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1281         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1342         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1282         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1343             goto branch_yes_2; 1283             goto branch_yes_2;
1344         } else { 1284         } else {
1345             goto branch_no_2; 1285             goto branch_no_2;
1353         PyObject *tmp_args_name_1; 1293         PyObject *tmp_args_name_1;
1354         PyObject *tmp_tuple_element_1; 1294         PyObject *tmp_tuple_element_1;
1355         PyObject *tmp_kwargs_name_1; 1295         PyObject *tmp_kwargs_name_1;
1356         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1296         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1357         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1297         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1358         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[13]); n 1298         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[12]);
1359         if (tmp_called_name_1 == NULL) { 1299         if (tmp_called_name_1 == NULL) {
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);
1363 1303
1395         nuitka_bool tmp_condition_result_5; 1335         nuitka_bool tmp_condition_result_5;
1396         PyObject *tmp_operand_name_1; 1336         PyObject *tmp_operand_name_1;
1397         PyObject *tmp_expression_name_4; 1337         PyObject *tmp_expression_name_4;
1398         CHECK_OBJECT(tmp_class_creation_1__prepared); 1338         CHECK_OBJECT(tmp_class_creation_1__prepared);
1399         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1339         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1400         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[14]); n 1340         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[13]);
1401         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1341         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1402         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1342         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1403         if (tmp_res == -1) { 1343         if (tmp_res == -1) {
1404             assert(ERROR_OCCURRED()); 1344             assert(ERROR_OCCURRED());
1405 1345
1426         PyObject *tmp_tuple_element_2; 1366         PyObject *tmp_tuple_element_2;
1427         PyObject *tmp_getattr_target_1; 1367         PyObject *tmp_getattr_target_1;
1428         PyObject *tmp_getattr_attr_1; 1368         PyObject *tmp_getattr_attr_1;
1429         PyObject *tmp_getattr_default_1; 1369         PyObject *tmp_getattr_default_1;
1430         tmp_raise_type_1 = PyExc_TypeError; 1370         tmp_raise_type_1 = PyExc_TypeError;
n 1431         tmp_left_name_1 = mod_consts[15]; n 1371         tmp_left_name_1 = mod_consts[14];
1432         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1372         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1433         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1373         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1434         tmp_getattr_attr_1 = mod_consts[16]; n 1374         tmp_getattr_attr_1 = mod_consts[15];
1435         tmp_getattr_default_1 = mod_consts[17]; 1375         tmp_getattr_default_1 = mod_consts[16];
1436         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1376         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1437         if (tmp_tuple_element_2 == NULL) { 1377         if (tmp_tuple_element_2 == NULL) {
1438             assert(ERROR_OCCURRED()); 1378             assert(ERROR_OCCURRED());
1439 1379
1440             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1380             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1451             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1391             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1452             CHECK_OBJECT(tmp_class_creation_1__prepared); 1392             CHECK_OBJECT(tmp_class_creation_1__prepared);
1453             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1393             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1454             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1394             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1455             assert(!(tmp_expression_name_5 == NULL)); 1395             assert(!(tmp_expression_name_5 == NULL));
n 1456             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[16]); n 1396             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[15]);
1457             Py_DECREF(tmp_expression_name_5); 1397             Py_DECREF(tmp_expression_name_5);
1458             if (tmp_tuple_element_2 == NULL) { 1398             if (tmp_tuple_element_2 == NULL) {
1459                 assert(ERROR_OCCURRED()); 1399                 assert(ERROR_OCCURRED());
1460 1400
1461                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1401                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1513             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1453             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1514             Py_INCREF(tmp_set_locals_1); 1454             Py_INCREF(tmp_set_locals_1);
1515         } 1455         }
1516         // Tried code: 1456         // Tried code:
1517         // Tried code: 1457         // Tried code:
n 1518         tmp_dictset_value = mod_consts[18]; n 1458         tmp_dictset_value = mod_consts[17];
1459         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1460         if (tmp_res != 0) {
1461             assert(ERROR_OCCURRED());
1462  
1463             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1464  
1465  
1466             exception_lineno = 22;
1467  
1468             goto try_except_handler_3;
1469         }
1470         tmp_dictset_value = mod_consts[2];
1519         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1471         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1520         if (tmp_res != 0) { n
1521             assert(ERROR_OCCURRED());
1522  
1523             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1524  
1525  
1526             exception_lineno = 22;
1527  
1528             goto try_except_handler_3;
1529         }
1530         tmp_dictset_value = mod_consts[2];
1531         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1532         if (tmp_res != 0) { 1472         if (tmp_res != 0) {
1533             assert(ERROR_OCCURRED()); 1473             assert(ERROR_OCCURRED());
1534 1474
1535             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1475             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1536 1476
1568         // Framed code: 1508         // Framed code:
1569 1509
1570 1510
1571         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1511         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1572 1512
n 1573         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1513         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1574         Py_DECREF(tmp_dictset_value); 1514         Py_DECREF(tmp_dictset_value);
1575         if (tmp_res != 0) { 1515         if (tmp_res != 0) {
1576             assert(ERROR_OCCURRED()); 1516             assert(ERROR_OCCURRED());
1577 1517
1578             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1518             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1641             nuitka_bool tmp_condition_result_6; 1581             nuitka_bool tmp_condition_result_6;
1642             PyObject *tmp_compexpr_left_1; 1582             PyObject *tmp_compexpr_left_1;
1643             PyObject *tmp_compexpr_right_1; 1583             PyObject *tmp_compexpr_right_1;
1644             CHECK_OBJECT(tmp_class_creation_1__bases); 1584             CHECK_OBJECT(tmp_class_creation_1__bases);
1645             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1585             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1646             tmp_compexpr_right_1 = mod_consts[10]; n 1586             tmp_compexpr_right_1 = mod_consts[9];
1647             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1587             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1648             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1588             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1649                 assert(ERROR_OCCURRED()); 1589                 assert(ERROR_OCCURRED());
1650 1590
1651                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1591                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1661                 goto branch_no_4; 1601                 goto branch_no_4;
1662             } 1602             }
1663             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1603             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1664         } 1604         }
1665         branch_yes_4:; 1605         branch_yes_4:;
n 1666         tmp_dictset_value = mod_consts[10]; n 1606         tmp_dictset_value = mod_consts[9];
1667         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value); 1607         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1668         if (tmp_res != 0) { 1608         if (tmp_res != 0) {
1669             assert(ERROR_OCCURRED()); 1609             assert(ERROR_OCCURRED());
1670 1610
1671             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1611             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1832         PyObject *tmp_level_name_1; 1772         PyObject *tmp_level_name_1;
1833         tmp_name_name_1 = mod_consts[24]; 1773         tmp_name_name_1 = mod_consts[24];
1834         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1774         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1835         tmp_locals_arg_name_1 = Py_None; 1775         tmp_locals_arg_name_1 = Py_None;
1836         tmp_fromlist_name_1 = Py_None; 1776         tmp_fromlist_name_1 = Py_None;
t 1837         tmp_level_name_1 = mod_consts[12]; t 1777         tmp_level_name_1 = mod_consts[11];
1838         frame_fe4d86ca1ac4455c93b29af457e75e09->m_frame.f_lineno = 40; 1778         frame_fe4d86ca1ac4455c93b29af457e75e09->m_frame.f_lineno = 40;
1839         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); 1779         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);
1840         assert(!(tmp_assign_source_14 == NULL)); 1780         assert(!(tmp_assign_source_14 == NULL));
1841         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14); 1781         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1842     } 1782     }