Construct CallCompiledObjectMethodNoArgs

Performance Diagrams

Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)10574293388.11538461538461257.0CPython 2.727700100240.03846153846155439.38178331283126Nuitka (main)27700100391.96153846153845439.38178331283126Nuitka (develop)27700100543.8846153846154439.38178331283126Nuitka (factory)Construct CallCompiledObjectMethodNoArgsTicks Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)9320961588.95192307692307257.0CPython 3.830951717242.31730769230768422.0568389282091Nuitka (main)30952097395.6826923076923422.0558314801454Nuitka (develop)30952097549.0480769230769422.0558314801454Nuitka (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_a8422542af89f410dd29f53404031337; 84 static PyCodeObject *codeobj_a8422542af89f410dd29f53404031337;
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_83bb0583334a7bba49b2a1315c956bd5 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0); 90     codeobj_83bb0583334a7bba49b2a1315c956bd5 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_dc2b63f9f67c68b23c6b59e3934ef6eb = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0); 91     codeobj_dc2b63f9f67c68b23c6b59e3934ef6eb = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_ba2bc3d1501aa918336c6b151a2cb95c = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0); 92     codeobj_ba2bc3d1501aa918336c6b151a2cb95c = 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_a8422542af89f410dd29f53404031337 = 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_a8422542af89f410dd29f53404031337 = 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
452     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 452     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
453     PyObject *exception_type = NULL; 453     PyObject *exception_type = NULL;
454     PyObject *exception_value = NULL; 454     PyObject *exception_value = NULL;
455     PyTracebackObject *exception_tb = NULL; 455     PyTracebackObject *exception_tb = NULL;
456     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 456     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 457     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
458     static struct Nuitka_FrameObject *cache_frame_ba2bc3d1501aa918336c6b151a2cb95c = NULL; 457     static struct Nuitka_FrameObject *cache_frame_ba2bc3d1501aa918336c6b151a2cb95c = NULL;
459     PyObject *tmp_return_value = NULL; 458     PyObject *tmp_return_value = NULL;
460     PyObject *exception_keeper_type_1; 459     PyObject *exception_keeper_type_1;
461     PyObject *exception_keeper_value_1; 460     PyObject *exception_keeper_value_1;
462     PyTracebackObject *exception_keeper_tb_1; 461     PyTracebackObject *exception_keeper_tb_1;
522             type_description_1 = "o"; 521             type_description_1 = "o";
523             goto frame_exception_exit_1; 522             goto frame_exception_exit_1;
524         } 523         }
525         assert(var_inst == NULL); 524         assert(var_inst == NULL);
526         var_inst = tmp_assign_source_1; 525         var_inst = tmp_assign_source_1;
n 527     } n
528     {
529         PyObject *tmp_called_instance_1;
530         PyObject *tmp_call_result_1;
531         CHECK_OBJECT(var_inst);
532         tmp_called_instance_1 = var_inst;
533         frame_ba2bc3d1501aa918336c6b151a2cb95c->m_frame.f_lineno = 32;
534         tmp_call_result_1 = CALL_METHOD_NO_ARGS(tmp_called_instance_1, mod_consts[3]);
535         if (tmp_call_result_1 == NULL) {
536             assert(ERROR_OCCURRED());
537  
538             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
539  
540  
541             exception_lineno = 32;
542             type_description_1 = "o";
543             goto frame_exception_exit_1;
544         }
545         Py_DECREF(tmp_call_result_1);
546     }
547     {
548         PyObject *tmp_called_instance_2;
549         PyObject *tmp_call_result_2;
550         CHECK_OBJECT(var_inst);
551         tmp_called_instance_2 = var_inst;
552         frame_ba2bc3d1501aa918336c6b151a2cb95c->m_frame.f_lineno = 33;
553         tmp_call_result_2 = CALL_METHOD_NO_ARGS(tmp_called_instance_2, mod_consts[3]);
554         if (tmp_call_result_2 == NULL) {
555             assert(ERROR_OCCURRED());
556  
557             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
558  
559  
560             exception_lineno = 33;
561             type_description_1 = "o";
562             goto frame_exception_exit_1;
563         }
564         Py_DECREF(tmp_call_result_2);
565     }
566     {
567         PyObject *tmp_called_instance_3;
568         PyObject *tmp_call_result_3;
569         CHECK_OBJECT(var_inst);
570         tmp_called_instance_3 = var_inst;
571         frame_ba2bc3d1501aa918336c6b151a2cb95c->m_frame.f_lineno = 34;
572         tmp_call_result_3 = CALL_METHOD_NO_ARGS(tmp_called_instance_3, mod_consts[3]);
573         if (tmp_call_result_3 == NULL) {
574             assert(ERROR_OCCURRED());
575  
576             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
577  
578  
579             exception_lineno = 34;
580             type_description_1 = "o";
581             goto frame_exception_exit_1;
582         }
583         Py_DECREF(tmp_call_result_3);
584     } 526     }
585 527
586 #if 0 528 #if 0
587     RESTORE_FRAME_EXCEPTION(frame_ba2bc3d1501aa918336c6b151a2cb95c); 529     RESTORE_FRAME_EXCEPTION(frame_ba2bc3d1501aa918336c6b151a2cb95c);
588 #endif 530 #endif
652     exception_type = NULL; 594     exception_type = NULL;
653     exception_value = NULL; 595     exception_value = NULL;
654     exception_tb = NULL; 596     exception_tb = NULL;
655     exception_lineno = 0; 597     exception_lineno = 0;
656 598
n 657     Py_XDECREF(var_inst); n
658     var_inst = NULL;
659     // Re-raise. 599     // Re-raise.
660     exception_type = exception_keeper_type_1; 600     exception_type = exception_keeper_type_1;
661     exception_value = exception_keeper_value_1; 601     exception_value = exception_keeper_value_1;
662     exception_tb = exception_keeper_tb_1; 602     exception_tb = exception_keeper_tb_1;
663     exception_lineno = exception_keeper_lineno_1; 603     exception_lineno = exception_keeper_lineno_1;
688 628
689 629
690 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 630 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
691     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 631     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
692         impl___main__$$$function__1_compiled_method, 632         impl___main__$$$function__1_compiled_method,
n 693         mod_consts[3], n 633         mod_consts[20],
694 #if PYTHON_VERSION >= 0x300 634 #if PYTHON_VERSION >= 0x300
695         mod_consts[21], 635         mod_consts[21],
696 #endif 636 #endif
697         codeobj_a8422542af89f410dd29f53404031337, 637         codeobj_a8422542af89f410dd29f53404031337,
698         NULL, 638         NULL,
1125 1065
1126     // Module code. 1066     // Module code.
1127     { 1067     {
1128         PyObject *tmp_assign_source_1; 1068         PyObject *tmp_assign_source_1;
1129         tmp_assign_source_1 = Py_None; 1069         tmp_assign_source_1 = Py_None;
n 1130         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1070         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1131     } 1071     }
1132     { 1072     {
1133         PyObject *tmp_assign_source_2; 1073         PyObject *tmp_assign_source_2;
n 1134         tmp_assign_source_2 = mod_consts[5]; n 1074         tmp_assign_source_2 = mod_consts[4];
1135         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1075         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1136     } 1076     }
1137     { 1077     {
1138         PyObject *tmp_assign_source_3; 1078         PyObject *tmp_assign_source_3;
1139         tmp_assign_source_3 = Py_None; 1079         tmp_assign_source_3 = Py_None;
n 1140         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1080         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1141     } 1081     }
1142     { 1082     {
1143         PyObject *tmp_assign_source_4; 1083         PyObject *tmp_assign_source_4;
1144         tmp_assign_source_4 = PyDict_New(); 1084         tmp_assign_source_4 = PyDict_New();
n 1145         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1085         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1146     } 1086     }
1147     { 1087     {
1148         PyObject *tmp_assign_source_5; 1088         PyObject *tmp_assign_source_5;
1149         { 1089         {
1150             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1090             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1151             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1091             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1152         } 1092         }
1153 1093
1154         assert(!(tmp_assign_source_5 == NULL)); 1094         assert(!(tmp_assign_source_5 == NULL));
n 1155         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1095         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1156     } 1096     }
1157     // Frame without reuse. 1097     // Frame without reuse.
1158     frame_83bb0583334a7bba49b2a1315c956bd5 = MAKE_MODULE_FRAME(codeobj_83bb0583334a7bba49b2a1315c956bd5, module___main__); 1098     frame_83bb0583334a7bba49b2a1315c956bd5 = MAKE_MODULE_FRAME(codeobj_83bb0583334a7bba49b2a1315c956bd5, module___main__);
1159 1099
1160     // Push the new frame as the currently active one, and we should be exclusively 1100     // Push the new frame as the currently active one, and we should be exclusively
1165     // Framed code: 1105     // Framed code:
1166     // Tried code: 1106     // Tried code:
1167     { 1107     {
1168         PyObject *tmp_assign_source_6; 1108         PyObject *tmp_assign_source_6;
1169         PyObject *tmp_dircall_arg1_1; 1109         PyObject *tmp_dircall_arg1_1;
n 1170         tmp_dircall_arg1_1 = mod_consts[10]; n 1110         tmp_dircall_arg1_1 = mod_consts[9];
1171         Py_INCREF(tmp_dircall_arg1_1); 1111         Py_INCREF(tmp_dircall_arg1_1);
1172 1112
1173         { 1113         {
1174             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1114             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1175             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1115             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1205         int tmp_truth_name_1; 1145         int tmp_truth_name_1;
1206         PyObject *tmp_type_arg_1; 1146         PyObject *tmp_type_arg_1;
1207         PyObject *tmp_expression_value_1; 1147         PyObject *tmp_expression_value_1;
1208         PyObject *tmp_subscript_value_1; 1148         PyObject *tmp_subscript_value_1;
1209         PyObject *tmp_bases_value_1; 1149         PyObject *tmp_bases_value_1;
n 1210         tmp_key_value_1 = mod_consts[11]; n 1150         tmp_key_value_1 = mod_consts[10];
1211         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1151         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1212         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict; 1152         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict;
1213         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1); 1153         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1);
1214         assert(!(tmp_res == -1)); 1154         assert(!(tmp_res == -1));
1215         tmp_condition_result_1 = (tmp_res != 0) ? true : false; 1155         tmp_condition_result_1 = (tmp_res != 0) ? true : false;
1219             goto condexpr_false_1; 1159             goto condexpr_false_1;
1220         } 1160         }
1221         condexpr_true_1:; 1161         condexpr_true_1:;
1222         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1162         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1223         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict; 1163         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict;
n 1224         tmp_key_value_2 = mod_consts[11]; n 1164         tmp_key_value_2 = mod_consts[10];
1225         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2); 1165         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2);
1226         if (tmp_metaclass_value_1 == NULL) { 1166         if (tmp_metaclass_value_1 == NULL) {
1227             tmp_metaclass_value_1 = Py_None; 1167             tmp_metaclass_value_1 = Py_None;
1228         } 1168         }
1229         assert(!(tmp_metaclass_value_1 == NULL)); 1169         assert(!(tmp_metaclass_value_1 == NULL));
1249             goto condexpr_false_2; 1189             goto condexpr_false_2;
1250         } 1190         }
1251         condexpr_true_2:; 1191         condexpr_true_2:;
1252         CHECK_OBJECT(tmp_class_creation_1__bases); 1192         CHECK_OBJECT(tmp_class_creation_1__bases);
1253         tmp_expression_value_1 = tmp_class_creation_1__bases; 1193         tmp_expression_value_1 = tmp_class_creation_1__bases;
n 1254         tmp_subscript_value_1 = mod_consts[12]; n 1194         tmp_subscript_value_1 = mod_consts[11];
1255         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0); 1195         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0);
1256         if (tmp_type_arg_1 == NULL) { 1196         if (tmp_type_arg_1 == NULL) {
1257             assert(ERROR_OCCURRED()); 1197             assert(ERROR_OCCURRED());
1258 1198
1259             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1199             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1300     } 1240     }
1301     { 1241     {
1302         bool tmp_condition_result_3; 1242         bool tmp_condition_result_3;
1303         PyObject *tmp_key_value_3; 1243         PyObject *tmp_key_value_3;
1304         PyObject *tmp_dict_arg_value_3; 1244         PyObject *tmp_dict_arg_value_3;
n 1305         tmp_key_value_3 = mod_consts[11]; n 1245         tmp_key_value_3 = mod_consts[10];
1306         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1246         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1307         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict; 1247         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict;
1308         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3); 1248         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3);
1309         assert(!(tmp_res == -1)); 1249         assert(!(tmp_res == -1));
1310         tmp_condition_result_3 = (tmp_res != 0) ? true : false; 1250         tmp_condition_result_3 = (tmp_res != 0) ? true : false;
1315         } 1255         }
1316     } 1256     }
1317     branch_yes_1:; 1257     branch_yes_1:;
1318     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1258     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1319     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1259     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1320     tmp_dictdel_key = mod_consts[11]; n 1260     tmp_dictdel_key = mod_consts[10];
1321     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1261     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1322     if (tmp_result == false) { 1262     if (tmp_result == false) {
1323         assert(ERROR_OCCURRED()); 1263         assert(ERROR_OCCURRED());
1324 1264
1325         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1265         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1333     { 1273     {
1334         nuitka_bool tmp_condition_result_4; 1274         nuitka_bool tmp_condition_result_4;
1335         PyObject *tmp_expression_value_2; 1275         PyObject *tmp_expression_value_2;
1336         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1276         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1337         tmp_expression_value_2 = tmp_class_creation_1__metaclass; 1277         tmp_expression_value_2 = tmp_class_creation_1__metaclass;
n 1338         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[13]); n 1278         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[12]);
1339         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1279         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1340         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1280         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1341             goto branch_yes_2; 1281             goto branch_yes_2;
1342         } else { 1282         } else {
1343             goto branch_no_2; 1283             goto branch_no_2;
1351         PyObject *tmp_args_value_1; 1291         PyObject *tmp_args_value_1;
1352         PyObject *tmp_tuple_element_1; 1292         PyObject *tmp_tuple_element_1;
1353         PyObject *tmp_kwargs_value_1; 1293         PyObject *tmp_kwargs_value_1;
1354         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1294         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1355         tmp_expression_value_3 = tmp_class_creation_1__metaclass; 1295         tmp_expression_value_3 = tmp_class_creation_1__metaclass;
n 1356         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[13]); n 1296         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[12]);
1357         if (tmp_called_value_1 == NULL) { 1297         if (tmp_called_value_1 == NULL) {
1358             assert(ERROR_OCCURRED()); 1298             assert(ERROR_OCCURRED());
1359 1299
1360             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1300             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1361 1301
1393         bool tmp_condition_result_5; 1333         bool tmp_condition_result_5;
1394         PyObject *tmp_operand_value_1; 1334         PyObject *tmp_operand_value_1;
1395         PyObject *tmp_expression_value_4; 1335         PyObject *tmp_expression_value_4;
1396         CHECK_OBJECT(tmp_class_creation_1__prepared); 1336         CHECK_OBJECT(tmp_class_creation_1__prepared);
1397         tmp_expression_value_4 = tmp_class_creation_1__prepared; 1337         tmp_expression_value_4 = tmp_class_creation_1__prepared;
n 1398         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[14]); n 1338         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[13]);
1399         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False; 1339         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False;
1400         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1); 1340         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1);
1401         if (tmp_res == -1) { 1341         if (tmp_res == -1) {
1402             assert(ERROR_OCCURRED()); 1342             assert(ERROR_OCCURRED());
1403 1343
1424         PyObject *tmp_tuple_element_2; 1364         PyObject *tmp_tuple_element_2;
1425         PyObject *tmp_getattr_target_1; 1365         PyObject *tmp_getattr_target_1;
1426         PyObject *tmp_getattr_attr_1; 1366         PyObject *tmp_getattr_attr_1;
1427         PyObject *tmp_getattr_default_1; 1367         PyObject *tmp_getattr_default_1;
1428         tmp_raise_type_1 = PyExc_TypeError; 1368         tmp_raise_type_1 = PyExc_TypeError;
n 1429         tmp_left_value_1 = mod_consts[15]; n 1369         tmp_left_value_1 = mod_consts[14];
1430         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1370         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1431         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1371         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1432         tmp_getattr_attr_1 = mod_consts[16]; n 1372         tmp_getattr_attr_1 = mod_consts[15];
1433         tmp_getattr_default_1 = mod_consts[17]; 1373         tmp_getattr_default_1 = mod_consts[16];
1434         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1374         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1435         if (tmp_tuple_element_2 == NULL) { 1375         if (tmp_tuple_element_2 == NULL) {
1436             assert(ERROR_OCCURRED()); 1376             assert(ERROR_OCCURRED());
1437 1377
1438             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1378             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1449             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2); 1389             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2);
1450             CHECK_OBJECT(tmp_class_creation_1__prepared); 1390             CHECK_OBJECT(tmp_class_creation_1__prepared);
1451             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1391             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1452             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1392             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1453             assert(!(tmp_expression_value_5 == NULL)); 1393             assert(!(tmp_expression_value_5 == NULL));
n 1454             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[16]); n 1394             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[15]);
1455             Py_DECREF(tmp_expression_value_5); 1395             Py_DECREF(tmp_expression_value_5);
1456             if (tmp_tuple_element_2 == NULL) { 1396             if (tmp_tuple_element_2 == NULL) {
1457                 assert(ERROR_OCCURRED()); 1397                 assert(ERROR_OCCURRED());
1458 1398
1459                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1399                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1511             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1451             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1512             Py_INCREF(tmp_set_locals_1); 1452             Py_INCREF(tmp_set_locals_1);
1513         } 1453         }
1514         // Tried code: 1454         // Tried code:
1515         // Tried code: 1455         // Tried code:
n 1516         tmp_dictset_value = mod_consts[18]; n 1456         tmp_dictset_value = mod_consts[17];
1457         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1458         if (tmp_res != 0) {
1459             assert(ERROR_OCCURRED());
1460  
1461             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1462  
1463  
1464             exception_lineno = 22;
1465  
1466             goto try_except_handler_3;
1467         }
1468         tmp_dictset_value = mod_consts[2];
1517         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1469         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1518         if (tmp_res != 0) { n
1519             assert(ERROR_OCCURRED());
1520  
1521             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1522  
1523  
1524             exception_lineno = 22;
1525  
1526             goto try_except_handler_3;
1527         }
1528         tmp_dictset_value = mod_consts[2];
1529         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1530         if (tmp_res != 0) { 1470         if (tmp_res != 0) {
1531             assert(ERROR_OCCURRED()); 1471             assert(ERROR_OCCURRED());
1532 1472
1533             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1473             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1534 1474
1566         // Framed code: 1506         // Framed code:
1567 1507
1568 1508
1569         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1509         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1570 1510
n 1571         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1511         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1572         Py_DECREF(tmp_dictset_value); 1512         Py_DECREF(tmp_dictset_value);
1573         if (tmp_res != 0) { 1513         if (tmp_res != 0) {
1574             assert(ERROR_OCCURRED()); 1514             assert(ERROR_OCCURRED());
1575 1515
1576             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1516             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1639             nuitka_bool tmp_condition_result_6; 1579             nuitka_bool tmp_condition_result_6;
1640             PyObject *tmp_compexpr_left_1; 1580             PyObject *tmp_compexpr_left_1;
1641             PyObject *tmp_compexpr_right_1; 1581             PyObject *tmp_compexpr_right_1;
1642             CHECK_OBJECT(tmp_class_creation_1__bases); 1582             CHECK_OBJECT(tmp_class_creation_1__bases);
1643             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1583             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1644             tmp_compexpr_right_1 = mod_consts[10]; n 1584             tmp_compexpr_right_1 = mod_consts[9];
1645             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1585             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1646             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1586             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1647                 assert(ERROR_OCCURRED()); 1587                 assert(ERROR_OCCURRED());
1648 1588
1649                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1589                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1659                 goto branch_no_4; 1599                 goto branch_no_4;
1660             } 1600             }
1661             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1601             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1662         } 1602         }
1663         branch_yes_4:; 1603         branch_yes_4:;
n 1664         tmp_dictset_value = mod_consts[10]; n 1604         tmp_dictset_value = mod_consts[9];
1665         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value); 1605         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1666         if (tmp_res != 0) { 1606         if (tmp_res != 0) {
1667             assert(ERROR_OCCURRED()); 1607             assert(ERROR_OCCURRED());
1668 1608
1669             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1609             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1833         PyObject *tmp_level_value_1; 1773         PyObject *tmp_level_value_1;
1834         tmp_name_value_1 = mod_consts[24]; 1774         tmp_name_value_1 = mod_consts[24];
1835         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1775         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1836         tmp_locals_arg_value_1 = Py_None; 1776         tmp_locals_arg_value_1 = Py_None;
1837         tmp_fromlist_value_1 = Py_None; 1777         tmp_fromlist_value_1 = Py_None;
t 1838         tmp_level_value_1 = mod_consts[12]; t 1778         tmp_level_value_1 = mod_consts[11];
1839         frame_83bb0583334a7bba49b2a1315c956bd5->m_frame.f_lineno = 40; 1779         frame_83bb0583334a7bba49b2a1315c956bd5->m_frame.f_lineno = 40;
1840         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 1780         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
1841         assert(!(tmp_assign_source_14 == NULL)); 1781         assert(!(tmp_assign_source_14 == NULL));
1842         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14); 1782         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1843     } 1783     }