Construct CallCompiledObjectMethodNoArgs

Performance Diagrams

Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)10574293388.11538461538461257.0CPython 2.727700036240.03846153846155439.3819328772907Nuitka (master)27700081391.96153846153845439.3818277147801Nuitka (develop)27700063543.8846153846154439.3818697797844Nuitka (factory)Construct CallCompiledObjectMethodNoArgsTicks Construct CallCompiledObjectMethodNoArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)9320961588.95192307692307257.0CPython 3.828701980242.31730769230768428.0212946770979Nuitka (master)28701933395.6826923076923428.0214192825163Nuitka (develop)28702005549.0480769230769428.02122839762006Nuitka (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_b7e8765d690634a936c5d5def0862b29; 84 static PyCodeObject *codeobj_b7e8765d690634a936c5d5def0862b29;
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_8ab288c63117caf935055dfed3eb80a2 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0); 90     codeobj_8ab288c63117caf935055dfed3eb80a2 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_af74a04097ab764624a6f299bdac0b47 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0); 91     codeobj_af74a04097ab764624a6f299bdac0b47 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_42db776b96bccd4fc0dc4ae750e6da74 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0); 92     codeobj_42db776b96bccd4fc0dc4ae750e6da74 = 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_b7e8765d690634a936c5d5def0862b29 = 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_b7e8765d690634a936c5d5def0862b29 = 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_42db776b96bccd4fc0dc4ae750e6da74 = NULL; 457     static struct Nuitka_FrameObject *cache_frame_42db776b96bccd4fc0dc4ae750e6da74 = 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_42db776b96bccd4fc0dc4ae750e6da74->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_42db776b96bccd4fc0dc4ae750e6da74->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_42db776b96bccd4fc0dc4ae750e6da74->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_42db776b96bccd4fc0dc4ae750e6da74); 529     RESTORE_FRAME_EXCEPTION(frame_42db776b96bccd4fc0dc4ae750e6da74);
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_b7e8765d690634a936c5d5def0862b29, 637         codeobj_b7e8765d690634a936c5d5def0862b29,
698         NULL, 638         NULL,
1120 1060
1121     // Module code. 1061     // Module code.
1122     { 1062     {
1123         PyObject *tmp_assign_source_1; 1063         PyObject *tmp_assign_source_1;
1124         tmp_assign_source_1 = Py_None; 1064         tmp_assign_source_1 = Py_None;
n 1125         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1065         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1126     } 1066     }
1127     { 1067     {
1128         PyObject *tmp_assign_source_2; 1068         PyObject *tmp_assign_source_2;
n 1129         tmp_assign_source_2 = mod_consts[5]; n 1069         tmp_assign_source_2 = mod_consts[4];
1130         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1070         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1131     } 1071     }
1132     { 1072     {
1133         PyObject *tmp_assign_source_3; 1073         PyObject *tmp_assign_source_3;
1134         tmp_assign_source_3 = Py_None; 1074         tmp_assign_source_3 = Py_None;
n 1135         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1075         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1136     } 1076     }
1137     { 1077     {
1138         PyObject *tmp_assign_source_4; 1078         PyObject *tmp_assign_source_4;
1139         tmp_assign_source_4 = PyDict_New(); 1079         tmp_assign_source_4 = PyDict_New();
n 1140         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1080         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1141     } 1081     }
1142     { 1082     {
1143         PyObject *tmp_assign_source_5; 1083         PyObject *tmp_assign_source_5;
1144         { 1084         {
1145             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1085             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1146             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]); n 1086             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1147         } 1087         }
1148 1088
1149         assert(!(tmp_assign_source_5 == NULL)); 1089         assert(!(tmp_assign_source_5 == NULL));
n 1150         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5); n 1090         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1151     } 1091     }
1152     // Frame without reuse. 1092     // Frame without reuse.
1153     frame_8ab288c63117caf935055dfed3eb80a2 = MAKE_MODULE_FRAME(codeobj_8ab288c63117caf935055dfed3eb80a2, module___main__); 1093     frame_8ab288c63117caf935055dfed3eb80a2 = MAKE_MODULE_FRAME(codeobj_8ab288c63117caf935055dfed3eb80a2, module___main__);
1154 1094
1155     // Push the new frame as the currently active one, and we should be exclusively 1095     // Push the new frame as the currently active one, and we should be exclusively
1160     // Framed code: 1100     // Framed code:
1161     // Tried code: 1101     // Tried code:
1162     { 1102     {
1163         PyObject *tmp_assign_source_6; 1103         PyObject *tmp_assign_source_6;
1164         PyObject *tmp_dircall_arg1_1; 1104         PyObject *tmp_dircall_arg1_1;
n 1165         tmp_dircall_arg1_1 = mod_consts[10]; n 1105         tmp_dircall_arg1_1 = mod_consts[9];
1166         Py_INCREF(tmp_dircall_arg1_1); 1106         Py_INCREF(tmp_dircall_arg1_1);
1167 1107
1168         { 1108         {
1169             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1109             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1170             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1110             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1200         int tmp_truth_name_1; 1140         int tmp_truth_name_1;
1201         PyObject *tmp_type_arg_1; 1141         PyObject *tmp_type_arg_1;
1202         PyObject *tmp_expression_name_1; 1142         PyObject *tmp_expression_name_1;
1203         PyObject *tmp_subscript_name_1; 1143         PyObject *tmp_subscript_name_1;
1204         PyObject *tmp_bases_name_1; 1144         PyObject *tmp_bases_name_1;
n 1205         tmp_key_name_1 = mod_consts[11]; n 1145         tmp_key_name_1 = mod_consts[10];
1206         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1146         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1207         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1147         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1208         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1148         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1209         assert(!(tmp_res == -1)); 1149         assert(!(tmp_res == -1));
1210         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1150         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1214             goto condexpr_false_1; 1154             goto condexpr_false_1;
1215         } 1155         }
1216         condexpr_true_1:; 1156         condexpr_true_1:;
1217         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1157         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1218         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1158         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1219         tmp_key_name_2 = mod_consts[11]; n 1159         tmp_key_name_2 = mod_consts[10];
1220         \ 1160         \
1221         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2); 1161         tmp_metaclass_name_1 = DICT_GET_ITEM0(tmp_dict_arg_name_2, tmp_key_name_2);
1222         if (tmp_metaclass_name_1 == NULL) { 1162         if (tmp_metaclass_name_1 == NULL) {
1223             tmp_metaclass_name_1 = Py_None; 1163             tmp_metaclass_name_1 = Py_None;
1224         } 1164         }
1246             goto condexpr_false_2; 1186             goto condexpr_false_2;
1247         } 1187         }
1248         condexpr_true_2:; 1188         condexpr_true_2:;
1249         CHECK_OBJECT(tmp_class_creation_1__bases); 1189         CHECK_OBJECT(tmp_class_creation_1__bases);
1250         tmp_expression_name_1 = tmp_class_creation_1__bases; 1190         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1251         tmp_subscript_name_1 = mod_consts[12]; n 1191         tmp_subscript_name_1 = mod_consts[11];
1252         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1192         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1253         if (tmp_type_arg_1 == NULL) { 1193         if (tmp_type_arg_1 == NULL) {
1254             assert(ERROR_OCCURRED()); 1194             assert(ERROR_OCCURRED());
1255 1195
1256             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1196             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1297     } 1237     }
1298     { 1238     {
1299         nuitka_bool tmp_condition_result_3; 1239         nuitka_bool tmp_condition_result_3;
1300         PyObject *tmp_key_name_3; 1240         PyObject *tmp_key_name_3;
1301         PyObject *tmp_dict_arg_name_3; 1241         PyObject *tmp_dict_arg_name_3;
n 1302         tmp_key_name_3 = mod_consts[11]; n 1242         tmp_key_name_3 = mod_consts[10];
1303         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1243         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1304         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1244         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1305         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1245         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1306         assert(!(tmp_res == -1)); 1246         assert(!(tmp_res == -1));
1307         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1247         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1312         } 1252         }
1313     } 1253     }
1314     branch_yes_1:; 1254     branch_yes_1:;
1315     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1255     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1316     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1256     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1317     tmp_dictdel_key = mod_consts[11]; n 1257     tmp_dictdel_key = mod_consts[10];
1318     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1258     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1319     if (tmp_result == false) { 1259     if (tmp_result == false) {
1320         assert(ERROR_OCCURRED()); 1260         assert(ERROR_OCCURRED());
1321 1261
1322         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1262         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1330     { 1270     {
1331         nuitka_bool tmp_condition_result_4; 1271         nuitka_bool tmp_condition_result_4;
1332         PyObject *tmp_expression_name_2; 1272         PyObject *tmp_expression_name_2;
1333         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1273         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1334         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1274         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1335         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[13]); n 1275         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[12]);
1336         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1276         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1337         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1277         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1338             goto branch_yes_2; 1278             goto branch_yes_2;
1339         } else { 1279         } else {
1340             goto branch_no_2; 1280             goto branch_no_2;
1348         PyObject *tmp_args_name_1; 1288         PyObject *tmp_args_name_1;
1349         PyObject *tmp_tuple_element_1; 1289         PyObject *tmp_tuple_element_1;
1350         PyObject *tmp_kwargs_name_1; 1290         PyObject *tmp_kwargs_name_1;
1351         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1291         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1352         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1292         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1353         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[13]); n 1293         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[12]);
1354         if (tmp_called_name_1 == NULL) { 1294         if (tmp_called_name_1 == NULL) {
1355             assert(ERROR_OCCURRED()); 1295             assert(ERROR_OCCURRED());
1356 1296
1357             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1297             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1358 1298
1390         nuitka_bool tmp_condition_result_5; 1330         nuitka_bool tmp_condition_result_5;
1391         PyObject *tmp_operand_name_1; 1331         PyObject *tmp_operand_name_1;
1392         PyObject *tmp_expression_name_4; 1332         PyObject *tmp_expression_name_4;
1393         CHECK_OBJECT(tmp_class_creation_1__prepared); 1333         CHECK_OBJECT(tmp_class_creation_1__prepared);
1394         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1334         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1395         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[14]); n 1335         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[13]);
1396         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1336         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1397         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1337         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1398         if (tmp_res == -1) { 1338         if (tmp_res == -1) {
1399             assert(ERROR_OCCURRED()); 1339             assert(ERROR_OCCURRED());
1400 1340
1421         PyObject *tmp_tuple_element_2; 1361         PyObject *tmp_tuple_element_2;
1422         PyObject *tmp_getattr_target_1; 1362         PyObject *tmp_getattr_target_1;
1423         PyObject *tmp_getattr_attr_1; 1363         PyObject *tmp_getattr_attr_1;
1424         PyObject *tmp_getattr_default_1; 1364         PyObject *tmp_getattr_default_1;
1425         tmp_raise_type_1 = PyExc_TypeError; 1365         tmp_raise_type_1 = PyExc_TypeError;
n 1426         tmp_left_name_1 = mod_consts[15]; n 1366         tmp_left_name_1 = mod_consts[14];
1427         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1367         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1428         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1368         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1429         tmp_getattr_attr_1 = mod_consts[16]; n 1369         tmp_getattr_attr_1 = mod_consts[15];
1430         tmp_getattr_default_1 = mod_consts[17]; 1370         tmp_getattr_default_1 = mod_consts[16];
1431         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1371         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1432         if (tmp_tuple_element_2 == NULL) { 1372         if (tmp_tuple_element_2 == NULL) {
1433             assert(ERROR_OCCURRED()); 1373             assert(ERROR_OCCURRED());
1434 1374
1435             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1375             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1446             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1386             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1447             CHECK_OBJECT(tmp_class_creation_1__prepared); 1387             CHECK_OBJECT(tmp_class_creation_1__prepared);
1448             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1388             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1449             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1389             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1450             assert(!(tmp_expression_name_5 == NULL)); 1390             assert(!(tmp_expression_name_5 == NULL));
n 1451             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[16]); n 1391             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[15]);
1452             Py_DECREF(tmp_expression_name_5); 1392             Py_DECREF(tmp_expression_name_5);
1453             if (tmp_tuple_element_2 == NULL) { 1393             if (tmp_tuple_element_2 == NULL) {
1454                 assert(ERROR_OCCURRED()); 1394                 assert(ERROR_OCCURRED());
1455 1395
1456                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1396                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1508             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1448             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1509             Py_INCREF(tmp_set_locals_1); 1449             Py_INCREF(tmp_set_locals_1);
1510         } 1450         }
1511         // Tried code: 1451         // Tried code:
1512         // Tried code: 1452         // Tried code:
n 1513         tmp_dictset_value = mod_consts[18]; n 1453         tmp_dictset_value = mod_consts[17];
1454         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1455         if (tmp_res != 0) {
1456             assert(ERROR_OCCURRED());
1457  
1458             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1459  
1460  
1461             exception_lineno = 22;
1462  
1463             goto try_except_handler_3;
1464         }
1465         tmp_dictset_value = mod_consts[2];
1514         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value); 1466         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
n 1515         if (tmp_res != 0) { n
1516             assert(ERROR_OCCURRED());
1517  
1518             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1519  
1520  
1521             exception_lineno = 22;
1522  
1523             goto try_except_handler_3;
1524         }
1525         tmp_dictset_value = mod_consts[2];
1526         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1527         if (tmp_res != 0) { 1467         if (tmp_res != 0) {
1528             assert(ERROR_OCCURRED()); 1468             assert(ERROR_OCCURRED());
1529 1469
1530             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1470             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1531 1471
1563         // Framed code: 1503         // Framed code:
1564 1504
1565 1505
1566         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1506         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1567 1507
n 1568         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1508         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1569         Py_DECREF(tmp_dictset_value); 1509         Py_DECREF(tmp_dictset_value);
1570         if (tmp_res != 0) { 1510         if (tmp_res != 0) {
1571             assert(ERROR_OCCURRED()); 1511             assert(ERROR_OCCURRED());
1572 1512
1573             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1513             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1636             nuitka_bool tmp_condition_result_6; 1576             nuitka_bool tmp_condition_result_6;
1637             PyObject *tmp_compexpr_left_1; 1577             PyObject *tmp_compexpr_left_1;
1638             PyObject *tmp_compexpr_right_1; 1578             PyObject *tmp_compexpr_right_1;
1639             CHECK_OBJECT(tmp_class_creation_1__bases); 1579             CHECK_OBJECT(tmp_class_creation_1__bases);
1640             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1580             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1641             tmp_compexpr_right_1 = mod_consts[10]; n 1581             tmp_compexpr_right_1 = mod_consts[9];
1642             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1582             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1643             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1583             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1644                 assert(ERROR_OCCURRED()); 1584                 assert(ERROR_OCCURRED());
1645 1585
1646                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1586                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1656                 goto branch_no_4; 1596                 goto branch_no_4;
1657             } 1597             }
1658             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1598             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1659         } 1599         }
1660         branch_yes_4:; 1600         branch_yes_4:;
n 1661         tmp_dictset_value = mod_consts[10]; n 1601         tmp_dictset_value = mod_consts[9];
1662         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value); 1602         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1663         if (tmp_res != 0) { 1603         if (tmp_res != 0) {
1664             assert(ERROR_OCCURRED()); 1604             assert(ERROR_OCCURRED());
1665 1605
1666             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1606             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1827         PyObject *tmp_level_name_1; 1767         PyObject *tmp_level_name_1;
1828         tmp_name_name_1 = mod_consts[24]; 1768         tmp_name_name_1 = mod_consts[24];
1829         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1769         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1830         tmp_locals_arg_name_1 = Py_None; 1770         tmp_locals_arg_name_1 = Py_None;
1831         tmp_fromlist_name_1 = Py_None; 1771         tmp_fromlist_name_1 = Py_None;
t 1832         tmp_level_name_1 = mod_consts[12]; t 1772         tmp_level_name_1 = mod_consts[11];
1833         frame_8ab288c63117caf935055dfed3eb80a2->m_frame.f_lineno = 40; 1773         frame_8ab288c63117caf935055dfed3eb80a2->m_frame.f_lineno = 40;
1834         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); 1774         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);
1835         assert(!(tmp_assign_source_14 == NULL)); 1775         assert(!(tmp_assign_source_14 == NULL));
1836         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14); 1776         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1837     } 1777     }