Construct GeneratorExit

Performance Diagrams

Construct GeneratorExit 0010000000100000002000000020000000300000003000000040000000400000005000000050000000600000006000000070000000700000008000000080000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)8312529488.95192307692307257.0CPython 3.1043506716242.31730769230768374.77835204269616Nuitka (main)43503492395.6826923076923374.7879363697001Nuitka (develop)43500066549.0480769230769374.79812120354495Nuitka (factory)Construct GeneratorExitTicks Construct GeneratorExit 001000000010000000200000002000000030000000300000004000000040000000500000005000000060000000600000007000000070000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)7731880288.95192307692307257.0CPython 3.843406656242.31730769230768365.38518943843803Nuitka (main)43403358395.6826923076923365.395730038103Nuitka (develop)43405508549.0480769230769365.3888585131547Nuitka (factory)Construct GeneratorExitTicks Construct GeneratorExit 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)27001611288.11538461538461257.0CPython 2.7115652081240.03846153846155398.2720396897877Nuitka (main)115651816391.96153846153845398.27228221448905Nuitka (develop)115651816543.8846153846154398.27228221448905Nuitka (factory)Construct GeneratorExitTicks

Source Code with Construct

    exc = GeneratorExit

    try:
        # construct_begin
        throw(exc)
        # 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

    exc = GeneratorExit

    try:
        # construct_begin

        # 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
19     throw = gen.throw 19     throw = gen.throw
20     exc = GeneratorExit 20     exc = GeneratorExit
21 21
22     try: 22     try:
23         # construct_begin 23         # construct_begin
n 24         throw(exc) n 24  
25         # construct_alternative 25         # construct_alternative
t 26   t 26         pass
27   27         # construct_end
28     except exc: 28     except exc:
29         pass 29         pass
30 30
31     return throw, exc 31     return throw, exc
32 32

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[18]; n 36 static PyObject *mod_consts[17];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[18]; n 38 static Py_hash_t mod_consts_hash[17];
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 < 18; i++) { n 53         for (int i = 0; i < 17; 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 < 18; i++) { n 73     for (int i = 0; i < 17; 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_68c8fc74578ef9729d96dd0f40a29934; 83 static PyCodeObject *codeobj_68c8fc74578ef9729d96dd0f40a29934;
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[7]; CHECK_OBJECT(module_filename_obj); n 88     module_filename_obj = mod_consts[6]; CHECK_OBJECT(module_filename_obj);
89     codeobj_c914b8cd58d16bed34c6b4c3524098c5 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[15], mod_consts[15], NULL, NULL, 0, 0, 0); 89     codeobj_c914b8cd58d16bed34c6b4c3524098c5 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[14], NULL, NULL, 0, 0, 0);
90     codeobj_main = codeobj_c914b8cd58d16bed34c6b4c3524098c5; 90     codeobj_main = codeobj_c914b8cd58d16bed34c6b4c3524098c5;
n 91     codeobj_671db0223164f16be469f2ba0084c3ba = MAKE_CODE_OBJECT(module_filename_obj, 7, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[10], mod_consts[10], mod_consts[16], NULL, 0, 0, 0); n 91     codeobj_671db0223164f16be469f2ba0084c3ba = MAKE_CODE_OBJECT(module_filename_obj, 7, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[9], mod_consts[15], NULL, 0, 0, 0);
92     codeobj_68c8fc74578ef9729d96dd0f40a29934 = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[0], mod_consts[17], NULL, NULL, 0, 0, 0); 92     codeobj_68c8fc74578ef9729d96dd0f40a29934 = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[0], mod_consts[16], NULL, 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$$$function__1_generator$$$genobj__1_generator(); 96 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_generator$$$genobj__1_generator();
97 97
118     PyObject *exception_type = NULL; 118     PyObject *exception_type = NULL;
119     PyObject *exception_value = NULL; 119     PyObject *exception_value = NULL;
120     PyTracebackObject *exception_tb = NULL; 120     PyTracebackObject *exception_tb = NULL;
121     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 121     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
122     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; 122     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
n n 123     static struct Nuitka_FrameObject *cache_frame_671db0223164f16be469f2ba0084c3ba = NULL;
124     PyObject *tmp_return_value = NULL;
123     PyObject *exception_keeper_type_1; 125     PyObject *exception_keeper_type_1;
124     PyObject *exception_keeper_value_1; 126     PyObject *exception_keeper_value_1;
125     PyTracebackObject *exception_keeper_tb_1; 127     PyTracebackObject *exception_keeper_tb_1;
126     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 128     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 127     int tmp_res; n
128     bool tmp_result;
129     static struct Nuitka_FrameObject *cache_frame_671db0223164f16be469f2ba0084c3ba = NULL;
130     PyObject *tmp_return_value = NULL;
131     PyObject *exception_keeper_type_2;
132     PyObject *exception_keeper_value_2;
133     PyTracebackObject *exception_keeper_tb_2;
134     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
135 129
136     // Actual function body. 130     // Actual function body.
137     { 131     {
138         PyObject *tmp_assign_source_1; 132         PyObject *tmp_assign_source_1;
139 133
231             goto frame_exception_exit_1; 225             goto frame_exception_exit_1;
232         } 226         }
233         assert(var_throw == NULL); 227         assert(var_throw == NULL);
234         var_throw = tmp_assign_source_3; 228         var_throw = tmp_assign_source_3;
235     } 229     }
n 236     // Tried code: n
237     {
238         PyObject *tmp_called_value_2;
239         PyObject *tmp_call_result_1;
240         CHECK_OBJECT(var_throw);
241         tmp_called_value_2 = var_throw;
242         frame_671db0223164f16be469f2ba0084c3ba->m_frame.f_lineno = 24;
243         tmp_call_result_1 = CALL_FUNCTION_WITH_POSARGS1(tstate, tmp_called_value_2, mod_consts[2]);
244 230
n 245         if (tmp_call_result_1 == NULL) { n
246             assert(HAS_ERROR_OCCURRED(tstate));
247  
248             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
249  
250  
251             exception_lineno = 24;
252             type_description_1 = "oooN";
253             goto try_except_handler_2;
254         }
255         Py_DECREF(tmp_call_result_1);
256     }
257     goto try_end_1;
258     // Exception handler code:
259     try_except_handler_2:;
260     exception_keeper_type_1 = exception_type;
261     exception_keeper_value_1 = exception_value;
262     exception_keeper_tb_1 = exception_tb;
263     exception_keeper_lineno_1 = exception_lineno;
264     exception_type = NULL;
265     exception_value = NULL;
266     exception_tb = NULL;
267     exception_lineno = 0;
268  
269     // Preserve existing published exception.
270     PRESERVE_FRAME_EXCEPTION(tstate, frame_671db0223164f16be469f2ba0084c3ba);
271     if (exception_keeper_tb_1 == NULL) {
272         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_671db0223164f16be469f2ba0084c3ba, exception_keeper_lineno_1);
273     } else if (exception_keeper_lineno_1 != 0) {
274         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_671db0223164f16be469f2ba0084c3ba, exception_keeper_lineno_1);
275     }
276  
277     PUBLISH_CURRENT_EXCEPTION(tstate, &exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
278     {
279         bool tmp_condition_result_1;
280         PyObject *tmp_cmp_expr_left_1;
281         PyObject *tmp_cmp_expr_right_1;
282         tmp_cmp_expr_left_1 = EXC_TYPE(PyThreadState_GET());
283         tmp_cmp_expr_right_1 = PyExc_GeneratorExit;
284         tmp_res = EXCEPTION_MATCH_BOOL(tstate, tmp_cmp_expr_left_1, tmp_cmp_expr_right_1);
285         assert(!(tmp_res == -1));
286         tmp_condition_result_1 = (tmp_res == 0) ? true : false;
287         if (tmp_condition_result_1 != false) {
288             goto branch_yes_1;
289         } else {
290             goto branch_no_1;
291         }
292     }
293     branch_yes_1:;
294     tmp_result = RERAISE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
295     if (unlikely(tmp_result == false)) {
296         exception_lineno = 22;
297     }
298  
299     if (exception_tb && exception_tb->tb_frame == &frame_671db0223164f16be469f2ba0084c3ba->m_frame) frame_671db0223164f16be469f2ba0084c3ba->m_frame.f_lineno = exception_tb->tb_lineno;
300     type_description_1 = "oooN";
301     goto frame_exception_exit_1;
302     branch_no_1:;
303     goto try_end_1;
304     NUITKA_CANNOT_GET_HERE("exception handler codes exits in all cases");
305     return NULL;
306     // End of try:
307     try_end_1:;
308  
309     // Restore frame exception if necessary.
310     RESTORE_FRAME_EXCEPTION(tstate, frame_671db0223164f16be469f2ba0084c3ba);
311 231
312     // Put the previous frame back on top. 232     // Put the previous frame back on top.
313     popFrameStack(tstate); 233     popFrameStack(tstate);
314 234
315     goto frame_no_exception_1; 235     goto frame_no_exception_1;
316     frame_exception_exit_1: 236     frame_exception_exit_1:
317 237
n 318     RESTORE_FRAME_EXCEPTION(tstate, frame_671db0223164f16be469f2ba0084c3ba); n
319 238
320     if (exception_tb == NULL) { 239     if (exception_tb == NULL) {
321         exception_tb = MAKE_TRACEBACK(frame_671db0223164f16be469f2ba0084c3ba, exception_lineno); 240         exception_tb = MAKE_TRACEBACK(frame_671db0223164f16be469f2ba0084c3ba, exception_lineno);
322     } else if (exception_tb->tb_frame != &frame_671db0223164f16be469f2ba0084c3ba->m_frame) { 241     } else if (exception_tb->tb_frame != &frame_671db0223164f16be469f2ba0084c3ba->m_frame) {
323         exception_tb = ADD_TRACEBACK(exception_tb, frame_671db0223164f16be469f2ba0084c3ba, exception_lineno); 242         exception_tb = ADD_TRACEBACK(exception_tb, frame_671db0223164f16be469f2ba0084c3ba, 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_1:; 299     try_except_handler_1:;
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_generator); 309     CHECK_OBJECT(var_generator);
391     Py_DECREF(var_generator); 310     Py_DECREF(var_generator);
392     var_generator = NULL; 311     var_generator = NULL;
393     Py_XDECREF(var_gen); 312     Py_XDECREF(var_gen);
394     var_gen = NULL; 313     var_gen = NULL;
n 395     Py_XDECREF(var_throw); n
396     var_throw = NULL;
397     // Re-raise. 314     // Re-raise.
n 398     exception_type = exception_keeper_type_2; n 315     exception_type = exception_keeper_type_1;
399     exception_value = exception_keeper_value_2; 316     exception_value = exception_keeper_value_1;
400     exception_tb = exception_keeper_tb_2; 317     exception_tb = exception_keeper_tb_1;
401     exception_lineno = exception_keeper_lineno_2; 318     exception_lineno = exception_keeper_lineno_1;
402 319
403     goto function_exception_exit; 320     goto function_exception_exit;
404     // End of try: 321     // End of try:
405 322
406     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 323     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
529 446
530     // Framed code: 447     // Framed code:
531     { 448     {
532         PyObject *tmp_expression_value_1; 449         PyObject *tmp_expression_value_1;
533         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_1; 450         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_1;
n 534         tmp_expression_value_1 = mod_consts[3]; n 451         tmp_expression_value_1 = mod_consts[2];
535         Py_INCREF(tmp_expression_value_1); 452         Py_INCREF(tmp_expression_value_1);
536         generator->m_yield_return_index = 1; 453         generator->m_yield_return_index = 1;
537         return tmp_expression_value_1; 454         return tmp_expression_value_1;
538         yield_return_1: 455         yield_return_1:
539         if (yield_return_value == NULL) { 456         if (yield_return_value == NULL) {
550         Py_DECREF(tmp_yield_result_1); 467         Py_DECREF(tmp_yield_result_1);
551     } 468     }
552     { 469     {
553         PyObject *tmp_expression_value_2; 470         PyObject *tmp_expression_value_2;
554         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_2; 471         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_2;
n 555         tmp_expression_value_2 = mod_consts[4]; n 472         tmp_expression_value_2 = mod_consts[3];
556         Py_INCREF(tmp_expression_value_2); 473         Py_INCREF(tmp_expression_value_2);
557         generator->m_yield_return_index = 2; 474         generator->m_yield_return_index = 2;
558         return tmp_expression_value_2; 475         return tmp_expression_value_2;
559         yield_return_2: 476         yield_return_2:
560         if (yield_return_value == NULL) { 477         if (yield_return_value == NULL) {
571         Py_DECREF(tmp_yield_result_2); 488         Py_DECREF(tmp_yield_result_2);
572     } 489     }
573     { 490     {
574         PyObject *tmp_expression_value_3; 491         PyObject *tmp_expression_value_3;
575         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_3; 492         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_3;
n 576         tmp_expression_value_3 = mod_consts[5]; n 493         tmp_expression_value_3 = mod_consts[4];
577         Py_INCREF(tmp_expression_value_3); 494         Py_INCREF(tmp_expression_value_3);
578         generator->m_yield_return_index = 3; 495         generator->m_yield_return_index = 3;
579         return tmp_expression_value_3; 496         return tmp_expression_value_3;
580         yield_return_3: 497         yield_return_3:
581         if (yield_return_value == NULL) { 498         if (yield_return_value == NULL) {
674 591
675 592
676 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 593 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
677     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 594     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
678         impl___main__$$$function__1_calledRepeatedly, 595         impl___main__$$$function__1_calledRepeatedly,
n 679         mod_consts[10], n 596         mod_consts[9],
680 #if PYTHON_VERSION >= 0x300 597 #if PYTHON_VERSION >= 0x300
681         NULL, 598         NULL,
682 #endif 599 #endif
683         codeobj_671db0223164f16be469f2ba0084c3ba, 600         codeobj_671db0223164f16be469f2ba0084c3ba,
684         NULL, 601         NULL,
1082 999
1083     // Module code. 1000     // Module code.
1084     { 1001     {
1085         PyObject *tmp_assign_source_1; 1002         PyObject *tmp_assign_source_1;
1086         tmp_assign_source_1 = Py_None; 1003         tmp_assign_source_1 = Py_None;
n 1087         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_1); n 1004         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1);
1088     } 1005     }
1089     { 1006     {
1090         PyObject *tmp_assign_source_2; 1007         PyObject *tmp_assign_source_2;
n 1091         tmp_assign_source_2 = mod_consts[7]; n 1008         tmp_assign_source_2 = mod_consts[6];
1092         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_2); 1009         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2);
1093     } 1010     }
1094     frame_c914b8cd58d16bed34c6b4c3524098c5 = MAKE_MODULE_FRAME(codeobj_c914b8cd58d16bed34c6b4c3524098c5, module___main__); 1011     frame_c914b8cd58d16bed34c6b4c3524098c5 = MAKE_MODULE_FRAME(codeobj_c914b8cd58d16bed34c6b4c3524098c5, module___main__);
1095 1012
1096     // Push the new frame as the currently active one, and we should be exclusively 1013     // Push the new frame as the currently active one, and we should be exclusively
1097     // owning it. 1014     // owning it.
1103         PyObject *tmp_assign_source_3; 1020         PyObject *tmp_assign_source_3;
1104         PyObject *tmp_name_value_1; 1021         PyObject *tmp_name_value_1;
1105         PyObject *tmp_globals_arg_value_1; 1022         PyObject *tmp_globals_arg_value_1;
1106         PyObject *tmp_locals_arg_value_1; 1023         PyObject *tmp_locals_arg_value_1;
1107         PyObject *tmp_fromlist_value_1; 1024         PyObject *tmp_fromlist_value_1;
n 1108         tmp_name_value_1 = mod_consts[9]; n 1025         tmp_name_value_1 = mod_consts[8];
1109         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1026         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1110         tmp_locals_arg_value_1 = Py_None; 1027         tmp_locals_arg_value_1 = Py_None;
1111         tmp_fromlist_value_1 = Py_None; 1028         tmp_fromlist_value_1 = Py_None;
1112         frame_c914b8cd58d16bed34c6b4c3524098c5->m_frame.f_lineno = 4; 1029         frame_c914b8cd58d16bed34c6b4c3524098c5->m_frame.f_lineno = 4;
1113         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); 1030         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);
1119 1036
1120             exception_lineno = 4; 1037             exception_lineno = 4;
1121 1038
1122             goto frame_exception_exit_1; 1039             goto frame_exception_exit_1;
1123         } 1040         }
n 1124         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_3); n 1041         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3);
1125     } 1042     }
1126     { 1043     {
1127         PyObject *tmp_assign_source_4; 1044         PyObject *tmp_assign_source_4;
1128 1045
1129 1046
1130         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 1047         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
1131 1048
n 1132         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_4); n 1049         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4);
1133     } 1050     }
1134     { 1051     {
1135         PyObject *tmp_assign_source_5; 1052         PyObject *tmp_assign_source_5;
1136         PyObject *tmp_iter_arg_1; 1053         PyObject *tmp_iter_arg_1;
1137         PyObject *tmp_called_instance_1; 1054         PyObject *tmp_called_instance_1;
n 1138         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]); n 1055         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
1139 1056
1140         if (unlikely(tmp_called_instance_1 == NULL)) { 1057         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1141             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]); n 1058             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]);
1142         } 1059         }
1143 1060
1144         assert(!(tmp_called_instance_1 == NULL)); 1061         assert(!(tmp_called_instance_1 == NULL));
1145         frame_c914b8cd58d16bed34c6b4c3524098c5->m_frame.f_lineno = 34; 1062         frame_c914b8cd58d16bed34c6b4c3524098c5->m_frame.f_lineno = 34;
1146         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1063         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1147             tstate, 1064             tstate,
1148             tmp_called_instance_1, 1065             tmp_called_instance_1,
n 1149             mod_consts[11], n 1066             mod_consts[10],
1150             &PyTuple_GET_ITEM(mod_consts[12], 0) 1067             &PyTuple_GET_ITEM(mod_consts[11], 0)
1151         ); 1068         );
1152 1069
1153         if (tmp_iter_arg_1 == NULL) { 1070         if (tmp_iter_arg_1 == NULL) {
1154             assert(HAS_ERROR_OCCURRED(tstate)); 1071             assert(HAS_ERROR_OCCURRED(tstate));
1155 1072
1205     } 1122     }
1206     { 1123     {
1207         PyObject *tmp_assign_source_7; 1124         PyObject *tmp_assign_source_7;
1208         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1125         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1209         tmp_assign_source_7 = tmp_for_loop_1__iter_value; 1126         tmp_assign_source_7 = tmp_for_loop_1__iter_value;
n 1210         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_7); n 1127         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_7);
1211     } 1128     }
1212     { 1129     {
1213         PyObject *tmp_called_value_1; 1130         PyObject *tmp_called_value_1;
1214         PyObject *tmp_call_result_1; 1131         PyObject *tmp_call_result_1;
n 1215         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]); n 1132         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
1216 1133
1217         if (unlikely(tmp_called_value_1 == NULL)) { 1134         if (unlikely(tmp_called_value_1 == NULL)) {
n 1218             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[10]); n 1135             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]);
1219         } 1136         }
1220 1137
1221         if (tmp_called_value_1 == NULL) { 1138         if (tmp_called_value_1 == NULL) {
1222             assert(HAS_ERROR_OCCURRED(tstate)); 1139             assert(HAS_ERROR_OCCURRED(tstate));
1223 1140
1283     Py_XDECREF(tmp_for_loop_1__iter_value); 1200     Py_XDECREF(tmp_for_loop_1__iter_value);
1284     tmp_for_loop_1__iter_value = NULL; 1201     tmp_for_loop_1__iter_value = NULL;
1285     CHECK_OBJECT(tmp_for_loop_1__for_iterator); 1202     CHECK_OBJECT(tmp_for_loop_1__for_iterator);
1286     Py_DECREF(tmp_for_loop_1__for_iterator); 1203     Py_DECREF(tmp_for_loop_1__for_iterator);
1287     tmp_for_loop_1__for_iterator = NULL; 1204     tmp_for_loop_1__for_iterator = NULL;
t 1288     tmp_print_value = mod_consts[14]; t 1205     tmp_print_value = mod_consts[13];
1289     tmp_result = PRINT_ITEM(tmp_print_value); 1206     tmp_result = PRINT_ITEM(tmp_print_value);
1290     if (tmp_result == false) { 1207     if (tmp_result == false) {
1291         assert(HAS_ERROR_OCCURRED(tstate)); 1208         assert(HAS_ERROR_OCCURRED(tstate));
1292 1209
1293         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 1210         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);