Construct CallCompiledObjectMethodPosArgsConstant1

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsConstant1 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)11340558688.11538461538461257.0CPython 2.731154357240.03846153846155436.2287735228764Nuitka (main)31154516391.96153846153845436.2284270554091Nuitka (develop)31154516543.8846153846154436.2284270554091Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant1Ticks Construct CallCompiledObjectMethodPosArgsConstant1 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)9938586188.95192307692307257.0CPython 3.834403384242.31730769230768418.573986838182Nuitka (main)34403755395.6826923076923418.5730643748983Nuitka (develop)34403755549.0480769230769418.5730643748983Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant1Ticks

Source Code with Construct

from __future__ import print_function

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

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("some")
    inst.compiled_method("some")
    inst.compiled_method("some")

# construct_alternative



import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Source Code without Construct

from __future__ import print_function

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

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("some") n 32  
33     inst.compiled_method("some") 33  
34     inst.compiled_method("some") 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
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *mod_consts[35]; n 36 static PyObject *mod_consts[34];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[35]; n 38 static Py_hash_t mod_consts_hash[34];
39 #endif 39 #endif
40 40
41 static PyObject *module_filename_obj = NULL; 41 static PyObject *module_filename_obj = NULL;
42 42
43 /* Indicator if this modules private constants were created yet. */ 43 /* Indicator if this modules private constants were created yet. */
48     if (constants_created == false) { 48     if (constants_created == false) {
49         loadConstantsBlob(&mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(&mod_consts[0], UNTRANSLATE("__main__"));
50         constants_created = true; 50         constants_created = true;
51 51
52 #ifndef __NUITKA_NO_ASSERT__ 52 #ifndef __NUITKA_NO_ASSERT__
n 53         for(int i = 0; i < 35; i++) { n 53         for(int i = 0; i < 34; i++) {
54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]);
55         } 55         }
56 #endif 56 #endif
57     } 57     }
58 } 58 }
68 #ifndef __NUITKA_NO_ASSERT__ 68 #ifndef __NUITKA_NO_ASSERT__
69 void checkModuleConstants___main__(void) { 69 void checkModuleConstants___main__(void) {
70     // The module may not have been used at all, then ignore this. 70     // The module may not have been used at all, then ignore this.
71     if (constants_created == false) return; 71     if (constants_created == false) return;
72 72
n 73     for(int i = 0; i < 35; i++) { n 73     for(int i = 0; i < 34; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i]));
75         CHECK_OBJECT_DEEP(mod_consts[i]); 75         CHECK_OBJECT_DEEP(mod_consts[i]);
76     } 76     }
77 } 77 }
78 #endif 78 #endif
84 static PyCodeObject *codeobj_07a34625dbab332ad19363eca838ec31; 84 static PyCodeObject *codeobj_07a34625dbab332ad19363eca838ec31;
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[6]; CHECK_OBJECT(module_filename_obj); n 89     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
90     codeobj_ffe576bb9fbca76895c746715773ef89 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0); 90     codeobj_ffe576bb9fbca76895c746715773ef89 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_849961a58c2f29ae88bfb1640ddfd638 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0); 91     codeobj_849961a58c2f29ae88bfb1640ddfd638 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_a59c567f65a72f31e5eaa6c586969381 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_a59c567f65a72f31e5eaa6c586969381 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0);
93     codeobj_07a34625dbab332ad19363eca838ec31 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[34], NULL, 2, 0, 0); 93     codeobj_07a34625dbab332ad19363eca838ec31 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[20], mod_consts[33], NULL, 2, 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
455     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 455     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
456     PyObject *exception_type = NULL; 456     PyObject *exception_type = NULL;
457     PyObject *exception_value = NULL; 457     PyObject *exception_value = NULL;
458     PyTracebackObject *exception_tb = NULL; 458     PyTracebackObject *exception_tb = NULL;
459     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 459     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 460     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
461     static struct Nuitka_FrameObject *cache_frame_a59c567f65a72f31e5eaa6c586969381 = NULL; 460     static struct Nuitka_FrameObject *cache_frame_a59c567f65a72f31e5eaa6c586969381 = NULL;
462     PyObject *tmp_return_value = NULL; 461     PyObject *tmp_return_value = NULL;
463     PyObject *exception_keeper_type_1; 462     PyObject *exception_keeper_type_1;
464     PyObject *exception_keeper_value_1; 463     PyObject *exception_keeper_value_1;
465     PyTracebackObject *exception_keeper_tb_1; 464     PyTracebackObject *exception_keeper_tb_1;
525             type_description_1 = "o"; 524             type_description_1 = "o";
526             goto frame_exception_exit_1; 525             goto frame_exception_exit_1;
527         } 526         }
528         assert(var_inst == NULL); 527         assert(var_inst == NULL);
529         var_inst = tmp_assign_source_1; 528         var_inst = tmp_assign_source_1;
n 530     } n
531     {
532         PyObject *tmp_called_instance_1;
533         PyObject *tmp_call_result_1;
534         CHECK_OBJECT(var_inst);
535         tmp_called_instance_1 = var_inst;
536         frame_a59c567f65a72f31e5eaa6c586969381->m_frame.f_lineno = 32;
537         tmp_call_result_1 = CALL_METHOD_WITH_SINGLE_ARG(
538             tmp_called_instance_1,
539             mod_consts[3],
540             PyTuple_GET_ITEM(mod_consts[4], 0)
541         );
542  
543         if (tmp_call_result_1 == NULL) {
544             assert(ERROR_OCCURRED());
545  
546             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
547  
548  
549             exception_lineno = 32;
550             type_description_1 = "o";
551             goto frame_exception_exit_1;
552         }
553         Py_DECREF(tmp_call_result_1);
554     }
555     {
556         PyObject *tmp_called_instance_2;
557         PyObject *tmp_call_result_2;
558         CHECK_OBJECT(var_inst);
559         tmp_called_instance_2 = var_inst;
560         frame_a59c567f65a72f31e5eaa6c586969381->m_frame.f_lineno = 33;
561         tmp_call_result_2 = CALL_METHOD_WITH_SINGLE_ARG(
562             tmp_called_instance_2,
563             mod_consts[3],
564             PyTuple_GET_ITEM(mod_consts[4], 0)
565         );
566  
567         if (tmp_call_result_2 == NULL) {
568             assert(ERROR_OCCURRED());
569  
570             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
571  
572  
573             exception_lineno = 33;
574             type_description_1 = "o";
575             goto frame_exception_exit_1;
576         }
577         Py_DECREF(tmp_call_result_2);
578     }
579     {
580         PyObject *tmp_called_instance_3;
581         PyObject *tmp_call_result_3;
582         CHECK_OBJECT(var_inst);
583         tmp_called_instance_3 = var_inst;
584         frame_a59c567f65a72f31e5eaa6c586969381->m_frame.f_lineno = 34;
585         tmp_call_result_3 = CALL_METHOD_WITH_SINGLE_ARG(
586             tmp_called_instance_3,
587             mod_consts[3],
588             PyTuple_GET_ITEM(mod_consts[4], 0)
589         );
590  
591         if (tmp_call_result_3 == NULL) {
592             assert(ERROR_OCCURRED());
593  
594             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
595  
596  
597             exception_lineno = 34;
598             type_description_1 = "o";
599             goto frame_exception_exit_1;
600         }
601         Py_DECREF(tmp_call_result_3);
602     } 529     }
603 530
604 #if 0 531 #if 0
605     RESTORE_FRAME_EXCEPTION(frame_a59c567f65a72f31e5eaa6c586969381); 532     RESTORE_FRAME_EXCEPTION(frame_a59c567f65a72f31e5eaa6c586969381);
606 #endif 533 #endif
670     exception_type = NULL; 597     exception_type = NULL;
671     exception_value = NULL; 598     exception_value = NULL;
672     exception_tb = NULL; 599     exception_tb = NULL;
673     exception_lineno = 0; 600     exception_lineno = 0;
674 601
n 675     Py_XDECREF(var_inst); n
676     var_inst = NULL;
677     // Re-raise. 602     // Re-raise.
678     exception_type = exception_keeper_type_1; 603     exception_type = exception_keeper_type_1;
679     exception_value = exception_keeper_value_1; 604     exception_value = exception_keeper_value_1;
680     exception_tb = exception_keeper_tb_1; 605     exception_tb = exception_keeper_tb_1;
681     exception_lineno = exception_keeper_lineno_1; 606     exception_lineno = exception_keeper_lineno_1;
706 631
707 632
708 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 633 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
709     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 634     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
710         impl___main__$$$function__1_compiled_method, 635         impl___main__$$$function__1_compiled_method,
n 711         mod_consts[3], n 636         mod_consts[20],
712 #if PYTHON_VERSION >= 0x300 637 #if PYTHON_VERSION >= 0x300
n 713         mod_consts[22], n 638         mod_consts[21],
714 #endif 639 #endif
715         codeobj_07a34625dbab332ad19363eca838ec31, 640         codeobj_07a34625dbab332ad19363eca838ec31,
716         NULL, 641         NULL,
717 #if PYTHON_VERSION >= 0x300 642 #if PYTHON_VERSION >= 0x300
718         NULL, 643         NULL,
731 656
732 657
733 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() { 658 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() {
734     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 659     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
735         impl___main__$$$function__2_calledRepeatedly, 660         impl___main__$$$function__2_calledRepeatedly,
n 736         mod_consts[24], n 661         mod_consts[23],
737 #if PYTHON_VERSION >= 0x300 662 #if PYTHON_VERSION >= 0x300
738         NULL, 663         NULL,
739 #endif 664 #endif
740         codeobj_a59c567f65a72f31e5eaa6c586969381, 665         codeobj_a59c567f65a72f31e5eaa6c586969381,
741         NULL, 666         NULL,
1143 1068
1144     // Module code. 1069     // Module code.
1145     { 1070     {
1146         PyObject *tmp_assign_source_1; 1071         PyObject *tmp_assign_source_1;
1147         tmp_assign_source_1 = Py_None; 1072         tmp_assign_source_1 = Py_None;
n 1148         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1); n 1073         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1149     } 1074     }
1150     { 1075     {
1151         PyObject *tmp_assign_source_2; 1076         PyObject *tmp_assign_source_2;
n 1152         tmp_assign_source_2 = mod_consts[6]; n 1077         tmp_assign_source_2 = mod_consts[4];
1153         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2); 1078         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1154     } 1079     }
1155     { 1080     {
1156         PyObject *tmp_assign_source_3; 1081         PyObject *tmp_assign_source_3;
1157         tmp_assign_source_3 = Py_None; 1082         tmp_assign_source_3 = Py_None;
n 1158         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3); n 1083         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1159     } 1084     }
1160     { 1085     {
1161         PyObject *tmp_assign_source_4; 1086         PyObject *tmp_assign_source_4;
1162         tmp_assign_source_4 = PyDict_New(); 1087         tmp_assign_source_4 = PyDict_New();
n 1163         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4); n 1088         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1164     } 1089     }
1165     { 1090     {
1166         PyObject *tmp_assign_source_5; 1091         PyObject *tmp_assign_source_5;
1167         { 1092         {
1168             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1093             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1169             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[10]); n 1094             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1170         } 1095         }
1171 1096
1172         assert(!(tmp_assign_source_5 == NULL)); 1097         assert(!(tmp_assign_source_5 == NULL));
n 1173         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_5); n 1098         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1174     } 1099     }
1175     // Frame without reuse. 1100     // Frame without reuse.
1176     frame_ffe576bb9fbca76895c746715773ef89 = MAKE_MODULE_FRAME(codeobj_ffe576bb9fbca76895c746715773ef89, module___main__); 1101     frame_ffe576bb9fbca76895c746715773ef89 = MAKE_MODULE_FRAME(codeobj_ffe576bb9fbca76895c746715773ef89, module___main__);
1177 1102
1178     // Push the new frame as the currently active one, and we should be exclusively 1103     // Push the new frame as the currently active one, and we should be exclusively
1183     // Framed code: 1108     // Framed code:
1184     // Tried code: 1109     // Tried code:
1185     { 1110     {
1186         PyObject *tmp_assign_source_6; 1111         PyObject *tmp_assign_source_6;
1187         PyObject *tmp_dircall_arg1_1; 1112         PyObject *tmp_dircall_arg1_1;
n 1188         tmp_dircall_arg1_1 = mod_consts[11]; n 1113         tmp_dircall_arg1_1 = mod_consts[9];
1189         Py_INCREF(tmp_dircall_arg1_1); 1114         Py_INCREF(tmp_dircall_arg1_1);
1190 1115
1191         { 1116         {
1192             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1117             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1193             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1118             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1223         int tmp_truth_name_1; 1148         int tmp_truth_name_1;
1224         PyObject *tmp_type_arg_1; 1149         PyObject *tmp_type_arg_1;
1225         PyObject *tmp_expression_value_1; 1150         PyObject *tmp_expression_value_1;
1226         PyObject *tmp_subscript_value_1; 1151         PyObject *tmp_subscript_value_1;
1227         PyObject *tmp_bases_value_1; 1152         PyObject *tmp_bases_value_1;
n 1228         tmp_key_value_1 = mod_consts[12]; n 1153         tmp_key_value_1 = mod_consts[10];
1229         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1154         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1230         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict; 1155         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict;
1231         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1); 1156         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1);
1232         assert(!(tmp_res == -1)); 1157         assert(!(tmp_res == -1));
1233         tmp_condition_result_1 = (tmp_res != 0) ? true : false; 1158         tmp_condition_result_1 = (tmp_res != 0) ? true : false;
1237             goto condexpr_false_1; 1162             goto condexpr_false_1;
1238         } 1163         }
1239         condexpr_true_1:; 1164         condexpr_true_1:;
1240         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1165         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1241         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict; 1166         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict;
n 1242         tmp_key_value_2 = mod_consts[12]; n 1167         tmp_key_value_2 = mod_consts[10];
1243         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2); 1168         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2);
1244         if (tmp_metaclass_value_1 == NULL) { 1169         if (tmp_metaclass_value_1 == NULL) {
1245             tmp_metaclass_value_1 = Py_None; 1170             tmp_metaclass_value_1 = Py_None;
1246         } 1171         }
1247         assert(!(tmp_metaclass_value_1 == NULL)); 1172         assert(!(tmp_metaclass_value_1 == NULL));
1267             goto condexpr_false_2; 1192             goto condexpr_false_2;
1268         } 1193         }
1269         condexpr_true_2:; 1194         condexpr_true_2:;
1270         CHECK_OBJECT(tmp_class_creation_1__bases); 1195         CHECK_OBJECT(tmp_class_creation_1__bases);
1271         tmp_expression_value_1 = tmp_class_creation_1__bases; 1196         tmp_expression_value_1 = tmp_class_creation_1__bases;
n 1272         tmp_subscript_value_1 = mod_consts[13]; n 1197         tmp_subscript_value_1 = mod_consts[11];
1273         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0); 1198         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0);
1274         if (tmp_type_arg_1 == NULL) { 1199         if (tmp_type_arg_1 == NULL) {
1275             assert(ERROR_OCCURRED()); 1200             assert(ERROR_OCCURRED());
1276 1201
1277             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1202             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1318     } 1243     }
1319     { 1244     {
1320         bool tmp_condition_result_3; 1245         bool tmp_condition_result_3;
1321         PyObject *tmp_key_value_3; 1246         PyObject *tmp_key_value_3;
1322         PyObject *tmp_dict_arg_value_3; 1247         PyObject *tmp_dict_arg_value_3;
n 1323         tmp_key_value_3 = mod_consts[12]; n 1248         tmp_key_value_3 = mod_consts[10];
1324         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1249         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1325         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict; 1250         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict;
1326         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3); 1251         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3);
1327         assert(!(tmp_res == -1)); 1252         assert(!(tmp_res == -1));
1328         tmp_condition_result_3 = (tmp_res != 0) ? true : false; 1253         tmp_condition_result_3 = (tmp_res != 0) ? true : false;
1333         } 1258         }
1334     } 1259     }
1335     branch_yes_1:; 1260     branch_yes_1:;
1336     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1261     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1337     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1262     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1338     tmp_dictdel_key = mod_consts[12]; n 1263     tmp_dictdel_key = mod_consts[10];
1339     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1264     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1340     if (tmp_result == false) { 1265     if (tmp_result == false) {
1341         assert(ERROR_OCCURRED()); 1266         assert(ERROR_OCCURRED());
1342 1267
1343         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1268         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1351     { 1276     {
1352         nuitka_bool tmp_condition_result_4; 1277         nuitka_bool tmp_condition_result_4;
1353         PyObject *tmp_expression_value_2; 1278         PyObject *tmp_expression_value_2;
1354         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1279         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1355         tmp_expression_value_2 = tmp_class_creation_1__metaclass; 1280         tmp_expression_value_2 = tmp_class_creation_1__metaclass;
n 1356         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[14]); n 1281         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[12]);
1357         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1282         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1358         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1283         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1359             goto branch_yes_2; 1284             goto branch_yes_2;
1360         } else { 1285         } else {
1361             goto branch_no_2; 1286             goto branch_no_2;
1369         PyObject *tmp_args_value_1; 1294         PyObject *tmp_args_value_1;
1370         PyObject *tmp_tuple_element_1; 1295         PyObject *tmp_tuple_element_1;
1371         PyObject *tmp_kwargs_value_1; 1296         PyObject *tmp_kwargs_value_1;
1372         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1297         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1373         tmp_expression_value_3 = tmp_class_creation_1__metaclass; 1298         tmp_expression_value_3 = tmp_class_creation_1__metaclass;
n 1374         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[14]); n 1299         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[12]);
1375         if (tmp_called_value_1 == NULL) { 1300         if (tmp_called_value_1 == NULL) {
1376             assert(ERROR_OCCURRED()); 1301             assert(ERROR_OCCURRED());
1377 1302
1378             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1303             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1379 1304
1411         bool tmp_condition_result_5; 1336         bool tmp_condition_result_5;
1412         PyObject *tmp_operand_value_1; 1337         PyObject *tmp_operand_value_1;
1413         PyObject *tmp_expression_value_4; 1338         PyObject *tmp_expression_value_4;
1414         CHECK_OBJECT(tmp_class_creation_1__prepared); 1339         CHECK_OBJECT(tmp_class_creation_1__prepared);
1415         tmp_expression_value_4 = tmp_class_creation_1__prepared; 1340         tmp_expression_value_4 = tmp_class_creation_1__prepared;
n 1416         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[15]); n 1341         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[13]);
1417         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False; 1342         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False;
1418         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1); 1343         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1);
1419         if (tmp_res == -1) { 1344         if (tmp_res == -1) {
1420             assert(ERROR_OCCURRED()); 1345             assert(ERROR_OCCURRED());
1421 1346
1442         PyObject *tmp_tuple_element_2; 1367         PyObject *tmp_tuple_element_2;
1443         PyObject *tmp_getattr_target_1; 1368         PyObject *tmp_getattr_target_1;
1444         PyObject *tmp_getattr_attr_1; 1369         PyObject *tmp_getattr_attr_1;
1445         PyObject *tmp_getattr_default_1; 1370         PyObject *tmp_getattr_default_1;
1446         tmp_raise_type_1 = PyExc_TypeError; 1371         tmp_raise_type_1 = PyExc_TypeError;
n 1447         tmp_left_value_1 = mod_consts[16]; n 1372         tmp_left_value_1 = mod_consts[14];
1448         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1373         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1449         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1374         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1450         tmp_getattr_attr_1 = mod_consts[17]; n 1375         tmp_getattr_attr_1 = mod_consts[15];
1451         tmp_getattr_default_1 = mod_consts[18]; 1376         tmp_getattr_default_1 = mod_consts[16];
1452         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1377         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1453         if (tmp_tuple_element_2 == NULL) { 1378         if (tmp_tuple_element_2 == NULL) {
1454             assert(ERROR_OCCURRED()); 1379             assert(ERROR_OCCURRED());
1455 1380
1456             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1381             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1467             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2); 1392             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2);
1468             CHECK_OBJECT(tmp_class_creation_1__prepared); 1393             CHECK_OBJECT(tmp_class_creation_1__prepared);
1469             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1394             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1470             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1395             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1471             assert(!(tmp_expression_value_5 == NULL)); 1396             assert(!(tmp_expression_value_5 == NULL));
n 1472             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[17]); n 1397             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[15]);
1473             Py_DECREF(tmp_expression_value_5); 1398             Py_DECREF(tmp_expression_value_5);
1474             if (tmp_tuple_element_2 == NULL) { 1399             if (tmp_tuple_element_2 == NULL) {
1475                 assert(ERROR_OCCURRED()); 1400                 assert(ERROR_OCCURRED());
1476 1401
1477                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1402                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1529             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1454             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1530             Py_INCREF(tmp_set_locals_1); 1455             Py_INCREF(tmp_set_locals_1);
1531         } 1456         }
1532         // Tried code: 1457         // Tried code:
1533         // Tried code: 1458         // Tried code:
n 1534         tmp_dictset_value = mod_consts[19]; n 1459         tmp_dictset_value = mod_consts[17];
1535         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value); 1460         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1536         if (tmp_res != 0) { 1461         if (tmp_res != 0) {
1537             assert(ERROR_OCCURRED()); 1462             assert(ERROR_OCCURRED());
1538 1463
1539             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1464             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1540 1465
1542             exception_lineno = 22; 1467             exception_lineno = 22;
1543 1468
1544             goto try_except_handler_3; 1469             goto try_except_handler_3;
1545         } 1470         }
1546         tmp_dictset_value = mod_consts[2]; 1471         tmp_dictset_value = mod_consts[2];
n 1547         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value); n 1472         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
1548         if (tmp_res != 0) { 1473         if (tmp_res != 0) {
1549             assert(ERROR_OCCURRED()); 1474             assert(ERROR_OCCURRED());
1550 1475
1551             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1476             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1552 1477
1584         // Framed code: 1509         // Framed code:
1585 1510
1586 1511
1587         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1512         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1588 1513
n 1589         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1514         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1590         Py_DECREF(tmp_dictset_value); 1515         Py_DECREF(tmp_dictset_value);
1591         if (tmp_res != 0) { 1516         if (tmp_res != 0) {
1592             assert(ERROR_OCCURRED()); 1517             assert(ERROR_OCCURRED());
1593 1518
1594             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1519             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1657             nuitka_bool tmp_condition_result_6; 1582             nuitka_bool tmp_condition_result_6;
1658             PyObject *tmp_compexpr_left_1; 1583             PyObject *tmp_compexpr_left_1;
1659             PyObject *tmp_compexpr_right_1; 1584             PyObject *tmp_compexpr_right_1;
1660             CHECK_OBJECT(tmp_class_creation_1__bases); 1585             CHECK_OBJECT(tmp_class_creation_1__bases);
1661             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1586             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1662             tmp_compexpr_right_1 = mod_consts[11]; n 1587             tmp_compexpr_right_1 = mod_consts[9];
1663             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1588             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1664             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1589             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1665                 assert(ERROR_OCCURRED()); 1590                 assert(ERROR_OCCURRED());
1666 1591
1667                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1592                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1677                 goto branch_no_4; 1602                 goto branch_no_4;
1678             } 1603             }
1679             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1604             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1680         } 1605         }
1681         branch_yes_4:; 1606         branch_yes_4:;
n 1682         tmp_dictset_value = mod_consts[11]; n 1607         tmp_dictset_value = mod_consts[9];
1683         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1608         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1684         if (tmp_res != 0) { 1609         if (tmp_res != 0) {
1685             assert(ERROR_OCCURRED()); 1610             assert(ERROR_OCCURRED());
1686 1611
1687             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1612             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1688 1613
1838         PyObject *tmp_assign_source_13; 1763         PyObject *tmp_assign_source_13;
1839 1764
1840 1765
1841         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly(); 1766         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly();
1842 1767
n 1843         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_13); n 1768         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[23], tmp_assign_source_13);
1844     } 1769     }
1845     { 1770     {
1846         PyObject *tmp_assign_source_14; 1771         PyObject *tmp_assign_source_14;
1847         PyObject *tmp_name_value_1; 1772         PyObject *tmp_name_value_1;
1848         PyObject *tmp_globals_arg_value_1; 1773         PyObject *tmp_globals_arg_value_1;
1849         PyObject *tmp_locals_arg_value_1; 1774         PyObject *tmp_locals_arg_value_1;
1850         PyObject *tmp_fromlist_value_1; 1775         PyObject *tmp_fromlist_value_1;
1851         PyObject *tmp_level_value_1; 1776         PyObject *tmp_level_value_1;
n 1852         tmp_name_value_1 = mod_consts[25]; n 1777         tmp_name_value_1 = mod_consts[24];
1853         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1778         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1854         tmp_locals_arg_value_1 = Py_None; 1779         tmp_locals_arg_value_1 = Py_None;
1855         tmp_fromlist_value_1 = Py_None; 1780         tmp_fromlist_value_1 = Py_None;
n 1856         tmp_level_value_1 = mod_consts[13]; n 1781         tmp_level_value_1 = mod_consts[11];
1857         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 40; 1782         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 40;
1858         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); 1783         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);
1859         assert(!(tmp_assign_source_14 == NULL)); 1784         assert(!(tmp_assign_source_14 == NULL));
n 1860         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14); n 1785         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1861     } 1786     }
1862     { 1787     {
1863         PyObject *tmp_assign_source_15; 1788         PyObject *tmp_assign_source_15;
1864         PyObject *tmp_iter_arg_1; 1789         PyObject *tmp_iter_arg_1;
1865         PyObject *tmp_called_instance_1; 1790         PyObject *tmp_called_instance_1;
n 1866         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[25]); n 1791         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[24]);
1867 1792
1868         if (unlikely(tmp_called_instance_1 == NULL)) { 1793         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1869             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[25]); n 1794             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[24]);
1870         } 1795         }
1871 1796
1872         assert(!(tmp_called_instance_1 == NULL)); 1797         assert(!(tmp_called_instance_1 == NULL));
1873         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 41; 1798         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 41;
1874         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1799         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1875             tmp_called_instance_1, 1800             tmp_called_instance_1,
n 1876             mod_consts[26], n 1801             mod_consts[25],
1877             &PyTuple_GET_ITEM(mod_consts[27], 0) 1802             &PyTuple_GET_ITEM(mod_consts[26], 0)
1878         ); 1803         );
1879 1804
1880         if (tmp_iter_arg_1 == NULL) { 1805         if (tmp_iter_arg_1 == NULL) {
1881             assert(ERROR_OCCURRED()); 1806             assert(ERROR_OCCURRED());
1882 1807
1932     } 1857     }
1933     { 1858     {
1934         PyObject *tmp_assign_source_17; 1859         PyObject *tmp_assign_source_17;
1935         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1860         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1936         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 1861         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 1937         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[28], tmp_assign_source_17); n 1862         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[27], tmp_assign_source_17);
1938     } 1863     }
1939     { 1864     {
1940         PyObject *tmp_called_value_3; 1865         PyObject *tmp_called_value_3;
1941         PyObject *tmp_call_result_1; 1866         PyObject *tmp_call_result_1;
n 1942         tmp_called_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[24]); n 1867         tmp_called_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[23]);
1943 1868
1944         if (unlikely(tmp_called_value_3 == NULL)) { 1869         if (unlikely(tmp_called_value_3 == NULL)) {
n 1945             tmp_called_value_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[24]); n 1870             tmp_called_value_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[23]);
1946         } 1871         }
1947 1872
1948         if (tmp_called_value_3 == NULL) { 1873         if (tmp_called_value_3 == NULL) {
1949             assert(ERROR_OCCURRED()); 1874             assert(ERROR_OCCURRED());
1950 1875
2013     Py_DECREF(tmp_for_loop_1__for_iterator); 1938     Py_DECREF(tmp_for_loop_1__for_iterator);
2014     tmp_for_loop_1__for_iterator = NULL; 1939     tmp_for_loop_1__for_iterator = NULL;
2015     { 1940     {
2016         PyObject *tmp_called_value_4; 1941         PyObject *tmp_called_value_4;
2017         PyObject *tmp_call_result_2; 1942         PyObject *tmp_call_result_2;
n 2018         tmp_called_value_4 = LOOKUP_BUILTIN(mod_consts[29]); n 1943         tmp_called_value_4 = LOOKUP_BUILTIN(mod_consts[28]);
2019         assert(tmp_called_value_4 != NULL); 1944         assert(tmp_called_value_4 != NULL);
2020         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 44; 1945         frame_ffe576bb9fbca76895c746715773ef89->m_frame.f_lineno = 44;
t 2021         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_4, mod_consts[30]); t 1946         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_4, mod_consts[29]);
2022 1947
2023         if (tmp_call_result_2 == NULL) { 1948         if (tmp_call_result_2 == NULL) {
2024             assert(ERROR_OCCURRED()); 1949             assert(ERROR_OCCURRED());
2025 1950
2026             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1951             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);