Construct GeneratorExpressionExit

Performance Diagrams

Construct GeneratorExpressionExit 0010000000100000002000000020000000300000003000000040000000400000005000000050000000600000006000000070000000700000008000000080000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)8217587488.95192307692307257.0CPython 3.1043694878242.31730769230768372.71822317244937Nuitka (main)43697623395.6826923076923372.70996853884765Nuitka (develop)43694126549.0480769230769372.72048455112645Nuitka (factory)Construct GeneratorExpressionExitTicks Construct GeneratorExpressionExit 001000000010000000200000002000000030000000300000004000000040000000500000005000000060000000600000007000000070000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)7681906088.95192307692307257.0CPython 3.843632030242.31730769230768363.7576937636611Nuitka (main)43604009395.6826923076923363.84783311439395Nuitka (develop)43599591549.0480769230769363.8620451572025Nuitka (factory)Construct GeneratorExpressionExitTicks Construct GeneratorExpressionExit 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)26961508088.11538461538461257.0CPython 2.7115602045240.03846153846155398.1604661720246Nuitka (main)115601780391.96153846153845398.16070905746307Nuitka (develop)115601780543.8846153846154398.16070905746307Nuitka (factory)Construct GeneratorExpressionExitTicks

Source Code with Construct

        # construct_alternative


    except exc:
        pass

    return throw, exc


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

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Source Code without Construct

        # construct_alternative
        pass
        # construct_end
    except exc:
        pass

    return throw, exc


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

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Context Diff of Source Code


Construct
Baseline
14     throw = gen.throw 14     throw = gen.throw
15     exc = GeneratorExit 15     exc = GeneratorExit
16 16
17     try: 17     try:
18         # construct_begin 18         # construct_begin
n 19         throw(exc) n 19  
20         # construct_alternative 20         # construct_alternative
t 21   t 21         pass
22   22         # construct_end
23     except exc: 23     except exc:
24         pass 24         pass
25 25
26     return throw, exc 26     return throw, exc
27 27

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[17]; n 36 static PyObject *mod_consts[16];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[17]; n 38 static Py_hash_t mod_consts_hash[16];
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(tstate, &mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(tstate, &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 < 17; i++) { n 53         for (int i = 0; i < 16; i++) {
54             mod_consts_hash[i] = DEEP_HASH(tstate, mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(tstate, 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__(PyThreadState *tstate) { 69 void checkModuleConstants___main__(PyThreadState *tstate) {
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 < 17; i++) { n 73     for (int i = 0; i < 16; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, 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
83 static PyCodeObject *codeobj_7c0599d68be9218201ade75089ea9050; 83 static PyCodeObject *codeobj_7c0599d68be9218201ade75089ea9050;
84 /* For use in "MainProgram.c". */ 84 /* For use in "MainProgram.c". */
85 PyCodeObject *codeobj_main = NULL; 85 PyCodeObject *codeobj_main = NULL;
86 86
87 static void createModuleCodeObjects(void) { 87 static void createModuleCodeObjects(void) {
n 88     module_filename_obj = mod_consts[5]; CHECK_OBJECT(module_filename_obj); n 88     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
89     codeobj_8dfb08ac2d7ecec20099e3955a55f117 = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[13], mod_consts[14], NULL, 1, 0, 0); 89     codeobj_8dfb08ac2d7ecec20099e3955a55f117 = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], mod_consts[12], mod_consts[13], NULL, 1, 0, 0);
90     codeobj_ea4ba4d510dddb566266ec8f15252c2e = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[15], mod_consts[15], NULL, NULL, 0, 0, 0); 90     codeobj_ea4ba4d510dddb566266ec8f15252c2e = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[14], NULL, NULL, 0, 0, 0);
91     codeobj_main = codeobj_ea4ba4d510dddb566266ec8f15252c2e; 91     codeobj_main = codeobj_ea4ba4d510dddb566266ec8f15252c2e;
n 92     codeobj_7c0599d68be9218201ade75089ea9050 = MAKE_CODE_OBJECT(module_filename_obj, 7, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[8], mod_consts[16], NULL, 0, 0, 0); n 92     codeobj_7c0599d68be9218201ade75089ea9050 = MAKE_CODE_OBJECT(module_filename_obj, 7, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[7], mod_consts[7], mod_consts[15], NULL, 0, 0, 0);
93 } 93 }
94 94
95 // The module function declarations. 95 // The module function declarations.
96 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr(struct Nuitka_CellObject **closure); 96 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr(struct Nuitka_CellObject **closure);
97 97
115     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; 115     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
116     PyObject *exception_type = NULL; 116     PyObject *exception_type = NULL;
117     PyObject *exception_value = NULL; 117     PyObject *exception_value = NULL;
118     PyTracebackObject *exception_tb = NULL; 118     PyTracebackObject *exception_tb = NULL;
119     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 119     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n n 120     static struct Nuitka_FrameObject *cache_frame_7c0599d68be9218201ade75089ea9050 = NULL;
121     PyObject *tmp_return_value = NULL;
120     PyObject *exception_keeper_type_1; 122     PyObject *exception_keeper_type_1;
121     PyObject *exception_keeper_value_1; 123     PyObject *exception_keeper_value_1;
122     PyTracebackObject *exception_keeper_tb_1; 124     PyTracebackObject *exception_keeper_tb_1;
123     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 125     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 124     int tmp_res; n
125     bool tmp_result;
126     static struct Nuitka_FrameObject *cache_frame_7c0599d68be9218201ade75089ea9050 = NULL;
127     PyObject *tmp_return_value = NULL;
128     PyObject *exception_keeper_type_2;
129     PyObject *exception_keeper_value_2;
130     PyTracebackObject *exception_keeper_tb_2;
131     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
132 126
133     // Actual function body. 127     // Actual function body.
134     { 128     {
135         PyObject *tmp_assign_source_1; 129         PyObject *tmp_assign_source_1;
136         { 130         {
235             goto frame_exception_exit_1; 229             goto frame_exception_exit_1;
236         } 230         }
237         assert(var_throw == NULL); 231         assert(var_throw == NULL);
238         var_throw = tmp_assign_source_3; 232         var_throw = tmp_assign_source_3;
239     } 233     }
n 240     // Tried code: n
241     {
242         PyObject *tmp_called_value_1;
243         PyObject *tmp_call_result_1;
244         CHECK_OBJECT(var_throw);
245         tmp_called_value_1 = var_throw;
246         frame_7c0599d68be9218201ade75089ea9050->m_frame.f_lineno = 19;
247         tmp_call_result_1 = CALL_FUNCTION_WITH_POSARGS1(tstate, tmp_called_value_1, mod_consts[2]);
248 234
n 249         if (tmp_call_result_1 == NULL) { n
250             assert(HAS_ERROR_OCCURRED(tstate));
251  
252             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
253  
254  
255             exception_lineno = 19;
256             type_description_1 = "ooN";
257             goto try_except_handler_3;
258         }
259         Py_DECREF(tmp_call_result_1);
260     }
261     goto try_end_1;
262     // Exception handler code:
263     try_except_handler_3:;
264     exception_keeper_type_1 = exception_type;
265     exception_keeper_value_1 = exception_value;
266     exception_keeper_tb_1 = exception_tb;
267     exception_keeper_lineno_1 = exception_lineno;
268     exception_type = NULL;
269     exception_value = NULL;
270     exception_tb = NULL;
271     exception_lineno = 0;
272  
273     // Preserve existing published exception.
274     PRESERVE_FRAME_EXCEPTION(tstate, frame_7c0599d68be9218201ade75089ea9050);
275     if (exception_keeper_tb_1 == NULL) {
276         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_7c0599d68be9218201ade75089ea9050, exception_keeper_lineno_1);
277     } else if (exception_keeper_lineno_1 != 0) {
278         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_7c0599d68be9218201ade75089ea9050, exception_keeper_lineno_1);
279     }
280  
281     PUBLISH_CURRENT_EXCEPTION(tstate, &exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
282     {
283         bool tmp_condition_result_1;
284         PyObject *tmp_cmp_expr_left_1;
285         PyObject *tmp_cmp_expr_right_1;
286         tmp_cmp_expr_left_1 = EXC_TYPE(PyThreadState_GET());
287         tmp_cmp_expr_right_1 = PyExc_GeneratorExit;
288         tmp_res = EXCEPTION_MATCH_BOOL(tstate, tmp_cmp_expr_left_1, tmp_cmp_expr_right_1);
289         assert(!(tmp_res == -1));
290         tmp_condition_result_1 = (tmp_res == 0) ? true : false;
291         if (tmp_condition_result_1 != false) {
292             goto branch_yes_1;
293         } else {
294             goto branch_no_1;
295         }
296     }
297     branch_yes_1:;
298     tmp_result = RERAISE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
299     if (unlikely(tmp_result == false)) {
300         exception_lineno = 17;
301     }
302  
303     if (exception_tb && exception_tb->tb_frame == &frame_7c0599d68be9218201ade75089ea9050->m_frame) frame_7c0599d68be9218201ade75089ea9050->m_frame.f_lineno = exception_tb->tb_lineno;
304     type_description_1 = "ooN";
305     goto frame_exception_exit_1;
306     branch_no_1:;
307     goto try_end_1;
308     NUITKA_CANNOT_GET_HERE("exception handler codes exits in all cases");
309     return NULL;
310     // End of try:
311     try_end_1:;
312  
313     // Restore frame exception if necessary.
314     RESTORE_FRAME_EXCEPTION(tstate, frame_7c0599d68be9218201ade75089ea9050);
315 235
316     // Put the previous frame back on top. 236     // Put the previous frame back on top.
317     popFrameStack(tstate); 237     popFrameStack(tstate);
318 238
319     goto frame_no_exception_1; 239     goto frame_no_exception_1;
320     frame_exception_exit_1: 240     frame_exception_exit_1:
321 241
n 322     RESTORE_FRAME_EXCEPTION(tstate, frame_7c0599d68be9218201ade75089ea9050); n
323 242
324     if (exception_tb == NULL) { 243     if (exception_tb == NULL) {
325         exception_tb = MAKE_TRACEBACK(frame_7c0599d68be9218201ade75089ea9050, exception_lineno); 244         exception_tb = MAKE_TRACEBACK(frame_7c0599d68be9218201ade75089ea9050, exception_lineno);
326     } else if (exception_tb->tb_frame != &frame_7c0599d68be9218201ade75089ea9050->m_frame) { 245     } else if (exception_tb->tb_frame != &frame_7c0599d68be9218201ade75089ea9050->m_frame) {
327         exception_tb = ADD_TRACEBACK(exception_tb, frame_7c0599d68be9218201ade75089ea9050, exception_lineno); 246         exception_tb = ADD_TRACEBACK(exception_tb, frame_7c0599d68be9218201ade75089ea9050, exception_lineno);
376     Py_DECREF(var_throw); 295     Py_DECREF(var_throw);
377     var_throw = NULL; 296     var_throw = NULL;
378     goto function_return_exit; 297     goto function_return_exit;
379     // Exception handler code: 298     // Exception handler code:
380     try_except_handler_2:; 299     try_except_handler_2:;
n 381     exception_keeper_type_2 = exception_type; n 300     exception_keeper_type_1 = exception_type;
382     exception_keeper_value_2 = exception_value; 301     exception_keeper_value_1 = exception_value;
383     exception_keeper_tb_2 = exception_tb; 302     exception_keeper_tb_1 = exception_tb;
384     exception_keeper_lineno_2 = exception_lineno; 303     exception_keeper_lineno_1 = exception_lineno;
385     exception_type = NULL; 304     exception_type = NULL;
386     exception_value = NULL; 305     exception_value = NULL;
387     exception_tb = NULL; 306     exception_tb = NULL;
388     exception_lineno = 0; 307     exception_lineno = 0;
389 308
390     CHECK_OBJECT(var_gen); 309     CHECK_OBJECT(var_gen);
391     Py_DECREF(var_gen); 310     Py_DECREF(var_gen);
392     var_gen = NULL; 311     var_gen = NULL;
n 393     Py_XDECREF(var_throw); n
394     var_throw = NULL;
395     // Re-raise. 312     // Re-raise.
n 396     exception_type = exception_keeper_type_2; n 313     exception_type = exception_keeper_type_1;
397     exception_value = exception_keeper_value_2; 314     exception_value = exception_keeper_value_1;
398     exception_tb = exception_keeper_tb_2; 315     exception_tb = exception_keeper_tb_1;
399     exception_lineno = exception_keeper_lineno_2; 316     exception_lineno = exception_keeper_lineno_1;
400 317
401     goto function_exception_exit; 318     goto function_exception_exit;
402     // End of try: 319     // End of try:
403 320
404     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 321     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
694 611
695 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr(struct Nuitka_CellObject **closure) { 612 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr(struct Nuitka_CellObject **closure) {
696     return Nuitka_Generator_New( 613     return Nuitka_Generator_New(
697         __main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr_context, 614         __main__$$$function__1_calledRepeatedly$$$genexpr__1_genexpr_context,
698         module___main__, 615         module___main__,
n 699         mod_consts[3], n 616         mod_consts[2],
700 #if PYTHON_VERSION >= 0x350 617 #if PYTHON_VERSION >= 0x350
701         NULL, 618         NULL,
702 #endif 619 #endif
703         codeobj_8dfb08ac2d7ecec20099e3955a55f117, 620         codeobj_8dfb08ac2d7ecec20099e3955a55f117,
704         closure, 621         closure,
714 631
715 632
716 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 633 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
717     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 634     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
718         impl___main__$$$function__1_calledRepeatedly, 635         impl___main__$$$function__1_calledRepeatedly,
n 719         mod_consts[8], n 636         mod_consts[7],
720 #if PYTHON_VERSION >= 0x300 637 #if PYTHON_VERSION >= 0x300
721         NULL, 638         NULL,
722 #endif 639 #endif
723         codeobj_7c0599d68be9218201ade75089ea9050, 640         codeobj_7c0599d68be9218201ade75089ea9050,
724         NULL, 641         NULL,
1096 1013
1097     // Module code. 1014     // Module code.
1098     { 1015     {
1099         PyObject *tmp_assign_source_1; 1016         PyObject *tmp_assign_source_1;
1100         tmp_assign_source_1 = Py_None; 1017         tmp_assign_source_1 = Py_None;
n 1101         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 1018         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1102     } 1019     }
1103     { 1020     {
1104         PyObject *tmp_assign_source_2; 1021         PyObject *tmp_assign_source_2;
n 1105         tmp_assign_source_2 = mod_consts[5]; n 1022         tmp_assign_source_2 = mod_consts[4];
1106         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 1023         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1107     } 1024     }
1108     frame_ea4ba4d510dddb566266ec8f15252c2e = MAKE_MODULE_FRAME(codeobj_ea4ba4d510dddb566266ec8f15252c2e, module___main__); 1025     frame_ea4ba4d510dddb566266ec8f15252c2e = MAKE_MODULE_FRAME(codeobj_ea4ba4d510dddb566266ec8f15252c2e, module___main__);
1109 1026
1110     // Push the new frame as the currently active one, and we should be exclusively 1027     // Push the new frame as the currently active one, and we should be exclusively
1111     // owning it. 1028     // owning it.
1117         PyObject *tmp_assign_source_3; 1034         PyObject *tmp_assign_source_3;
1118         PyObject *tmp_name_value_1; 1035         PyObject *tmp_name_value_1;
1119         PyObject *tmp_globals_arg_value_1; 1036         PyObject *tmp_globals_arg_value_1;
1120         PyObject *tmp_locals_arg_value_1; 1037         PyObject *tmp_locals_arg_value_1;
1121         PyObject *tmp_fromlist_value_1; 1038         PyObject *tmp_fromlist_value_1;
n 1122         tmp_name_value_1 = mod_consts[7]; n 1039         tmp_name_value_1 = mod_consts[6];
1123         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1040         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1124         tmp_locals_arg_value_1 = Py_None; 1041         tmp_locals_arg_value_1 = Py_None;
1125         tmp_fromlist_value_1 = Py_None; 1042         tmp_fromlist_value_1 = Py_None;
1126         frame_ea4ba4d510dddb566266ec8f15252c2e->m_frame.f_lineno = 4; 1043         frame_ea4ba4d510dddb566266ec8f15252c2e->m_frame.f_lineno = 4;
1127         tmp_assign_source_3 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1); 1044         tmp_assign_source_3 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1);
1133 1050
1134             exception_lineno = 4; 1051             exception_lineno = 4;
1135 1052
1136             goto frame_exception_exit_1; 1053             goto frame_exception_exit_1;
1137         } 1054         }
n 1138         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 1055         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1139     } 1056     }
1140     { 1057     {
1141         PyObject *tmp_assign_source_4; 1058         PyObject *tmp_assign_source_4;
1142 1059
1143 1060
1144         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 1061         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
1145 1062
n 1146         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 1063         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1147     } 1064     }
1148     { 1065     {
1149         PyObject *tmp_assign_source_5; 1066         PyObject *tmp_assign_source_5;
1150         PyObject *tmp_iter_arg_1; 1067         PyObject *tmp_iter_arg_1;
1151         PyObject *tmp_called_instance_1; 1068         PyObject *tmp_called_instance_1;
n 1152         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[7]); n 1069         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[6]);
1153 1070
1154         if (unlikely(tmp_called_instance_1 == NULL)) { 1071         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1155             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[7]); n 1072             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[6]);
1156         } 1073         }
1157 1074
1158         assert(!(tmp_called_instance_1 == NULL)); 1075         assert(!(tmp_called_instance_1 == NULL));
1159         frame_ea4ba4d510dddb566266ec8f15252c2e->m_frame.f_lineno = 29; 1076         frame_ea4ba4d510dddb566266ec8f15252c2e->m_frame.f_lineno = 29;
1160         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1077         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1161             tstate, 1078             tstate,
1162             tmp_called_instance_1, 1079             tmp_called_instance_1,
n 1163             mod_consts[9], n 1080             mod_consts[8],
1164             &PyTuple_GET_ITEM(mod_consts[10], 0) 1081             &PyTuple_GET_ITEM(mod_consts[9], 0)
1165         ); 1082         );
1166 1083
1167         if (tmp_iter_arg_1 == NULL) { 1084         if (tmp_iter_arg_1 == NULL) {
1168             assert(HAS_ERROR_OCCURRED(tstate)); 1085             assert(HAS_ERROR_OCCURRED(tstate));
1169 1086
1219     } 1136     }
1220     { 1137     {
1221         PyObject *tmp_assign_source_7; 1138         PyObject *tmp_assign_source_7;
1222         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1139         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1223         tmp_assign_source_7 = tmp_for_loop_1__iter_value; 1140         tmp_assign_source_7 = tmp_for_loop_1__iter_value;
n 1224         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_7); n 1141         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_7);
1225     } 1142     }
1226     { 1143     {
1227         PyObject *tmp_called_value_1; 1144         PyObject *tmp_called_value_1;
1228         PyObject *tmp_call_result_1; 1145         PyObject *tmp_call_result_1;
n 1229         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]); n 1146         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[7]);
1230 1147
1231         if (unlikely(tmp_called_value_1 == NULL)) { 1148         if (unlikely(tmp_called_value_1 == NULL)) {
n 1232             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]); n 1149             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[7]);
1233         } 1150         }
1234 1151
1235         if (tmp_called_value_1 == NULL) { 1152         if (tmp_called_value_1 == NULL) {
1236             assert(HAS_ERROR_OCCURRED(tstate)); 1153             assert(HAS_ERROR_OCCURRED(tstate));
1237 1154
1297     Py_XDECREF(tmp_for_loop_1__iter_value); 1214     Py_XDECREF(tmp_for_loop_1__iter_value);
1298     tmp_for_loop_1__iter_value = NULL; 1215     tmp_for_loop_1__iter_value = NULL;
1299     CHECK_OBJECT(tmp_for_loop_1__for_iterator); 1216     CHECK_OBJECT(tmp_for_loop_1__for_iterator);
1300     Py_DECREF(tmp_for_loop_1__for_iterator); 1217     Py_DECREF(tmp_for_loop_1__for_iterator);
1301     tmp_for_loop_1__for_iterator = NULL; 1218     tmp_for_loop_1__for_iterator = NULL;
t 1302     tmp_print_value = mod_consts[12]; t 1219     tmp_print_value = mod_consts[11];
1303     tmp_result = PRINT_ITEM(tmp_print_value); 1220     tmp_result = PRINT_ITEM(tmp_print_value);
1304     if (tmp_result == false) { 1221     if (tmp_result == false) {
1305         assert(HAS_ERROR_OCCURRED(tstate)); 1222         assert(HAS_ERROR_OCCURRED(tstate));
1306 1223
1307         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 1224         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);