Construct GeneratorExit

Performance Diagrams

Construct GeneratorExit 0010000000100000002000000020000000300000003000000040000000400000005000000050000000600000006000000070000000700000008000000080000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)8312529488.95192307692307257.0CPython 3.1043503666242.31730769230768374.7874191014313Nuitka (main)44000183395.6826923076923373.3113703138856Nuitka (develop)43998199549.0480769230769373.3172683612727Nuitka (factory)Construct GeneratorExitTicks Construct GeneratorExit 001000000010000000200000002000000030000000300000004000000040000000500000005000000060000000600000007000000070000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)7731880288.95192307692307257.0CPython 3.843367617242.31730769230768365.5099603512103Nuitka (main)43802214395.6826923076923364.12096308237403Nuitka (develop)43754288549.0480769230769364.27413736361905Nuitka (factory)Construct GeneratorExitTicks Construct GeneratorExit 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)27001611288.11538461538461257.0CPython 2.7115652030240.03846153846155398.27208636435284Nuitka (main)115651883391.96153846153845398.27222089692305Nuitka (develop)115652101543.8846153846154398.2720213860366Nuitka (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_868c1c01f05c0330ca5c24e7cc732520; 83 static PyCodeObject *codeobj_868c1c01f05c0330ca5c24e7cc732520;
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_3ac80f34a64de8ebdb27687f18d2a253 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[15], mod_consts[15], NULL, NULL, 0, 0, 0); 89     codeobj_3ac80f34a64de8ebdb27687f18d2a253 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[14], NULL, NULL, 0, 0, 0);
90     codeobj_main = codeobj_3ac80f34a64de8ebdb27687f18d2a253; 90     codeobj_main = codeobj_3ac80f34a64de8ebdb27687f18d2a253;
n 91     codeobj_0bdbecc3f66fc745186a8b78a69fa5cf = 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_0bdbecc3f66fc745186a8b78a69fa5cf = 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_868c1c01f05c0330ca5c24e7cc732520 = 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_868c1c01f05c0330ca5c24e7cc732520 = 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_0bdbecc3f66fc745186a8b78a69fa5cf = 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_0bdbecc3f66fc745186a8b78a69fa5cf = 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_0bdbecc3f66fc745186a8b78a69fa5cf->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_0bdbecc3f66fc745186a8b78a69fa5cf);
271     if (exception_keeper_tb_1 == NULL) {
272         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_0bdbecc3f66fc745186a8b78a69fa5cf, exception_keeper_lineno_1);
273     } else if (exception_keeper_lineno_1 != 0) {
274         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_0bdbecc3f66fc745186a8b78a69fa5cf, 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_0bdbecc3f66fc745186a8b78a69fa5cf->m_frame) frame_0bdbecc3f66fc745186a8b78a69fa5cf->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_0bdbecc3f66fc745186a8b78a69fa5cf);
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_0bdbecc3f66fc745186a8b78a69fa5cf); n
319 238
320     if (exception_tb == NULL) { 239     if (exception_tb == NULL) {
321         exception_tb = MAKE_TRACEBACK(frame_0bdbecc3f66fc745186a8b78a69fa5cf, exception_lineno); 240         exception_tb = MAKE_TRACEBACK(frame_0bdbecc3f66fc745186a8b78a69fa5cf, exception_lineno);
322     } else if (exception_tb->tb_frame != &frame_0bdbecc3f66fc745186a8b78a69fa5cf->m_frame) { 241     } else if (exception_tb->tb_frame != &frame_0bdbecc3f66fc745186a8b78a69fa5cf->m_frame) {
323         exception_tb = ADD_TRACEBACK(exception_tb, frame_0bdbecc3f66fc745186a8b78a69fa5cf, exception_lineno); 242         exception_tb = ADD_TRACEBACK(exception_tb, frame_0bdbecc3f66fc745186a8b78a69fa5cf, 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_0bdbecc3f66fc745186a8b78a69fa5cf, 600         codeobj_0bdbecc3f66fc745186a8b78a69fa5cf,
684         NULL, 601         NULL,
1090 1007
1091     // Module code. 1008     // Module code.
1092     { 1009     {
1093         PyObject *tmp_assign_source_1; 1010         PyObject *tmp_assign_source_1;
1094         tmp_assign_source_1 = Py_None; 1011         tmp_assign_source_1 = Py_None;
n 1095         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_1); n 1012         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1);
1096     } 1013     }
1097     { 1014     {
1098         PyObject *tmp_assign_source_2; 1015         PyObject *tmp_assign_source_2;
n 1099         tmp_assign_source_2 = mod_consts[7]; n 1016         tmp_assign_source_2 = mod_consts[6];
1100         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_2); 1017         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2);
1101     } 1018     }
1102     frame_3ac80f34a64de8ebdb27687f18d2a253 = MAKE_MODULE_FRAME(codeobj_3ac80f34a64de8ebdb27687f18d2a253, module___main__); 1019     frame_3ac80f34a64de8ebdb27687f18d2a253 = MAKE_MODULE_FRAME(codeobj_3ac80f34a64de8ebdb27687f18d2a253, module___main__);
1103 1020
1104     // Push the new frame as the currently active one, and we should be exclusively 1021     // Push the new frame as the currently active one, and we should be exclusively
1105     // owning it. 1022     // owning it.
1111         PyObject *tmp_assign_source_3; 1028         PyObject *tmp_assign_source_3;
1112         PyObject *tmp_name_value_1; 1029         PyObject *tmp_name_value_1;
1113         PyObject *tmp_globals_arg_value_1; 1030         PyObject *tmp_globals_arg_value_1;
1114         PyObject *tmp_locals_arg_value_1; 1031         PyObject *tmp_locals_arg_value_1;
1115         PyObject *tmp_fromlist_value_1; 1032         PyObject *tmp_fromlist_value_1;
n 1116         tmp_name_value_1 = mod_consts[9]; n 1033         tmp_name_value_1 = mod_consts[8];
1117         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1034         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1118         tmp_locals_arg_value_1 = Py_None; 1035         tmp_locals_arg_value_1 = Py_None;
1119         tmp_fromlist_value_1 = Py_None; 1036         tmp_fromlist_value_1 = Py_None;
1120         frame_3ac80f34a64de8ebdb27687f18d2a253->m_frame.f_lineno = 4; 1037         frame_3ac80f34a64de8ebdb27687f18d2a253->m_frame.f_lineno = 4;
1121         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); 1038         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);
1127 1044
1128             exception_lineno = 4; 1045             exception_lineno = 4;
1129 1046
1130             goto frame_exception_exit_1; 1047             goto frame_exception_exit_1;
1131         } 1048         }
n 1132         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_3); n 1049         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3);
1133     } 1050     }
1134     { 1051     {
1135         PyObject *tmp_assign_source_4; 1052         PyObject *tmp_assign_source_4;
1136 1053
1137 1054
1138         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 1055         tmp_assign_source_4 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
1139 1056
n 1140         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_4); n 1057         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4);
1141     } 1058     }
1142     { 1059     {
1143         PyObject *tmp_assign_source_5; 1060         PyObject *tmp_assign_source_5;
1144         PyObject *tmp_iter_arg_1; 1061         PyObject *tmp_iter_arg_1;
1145         PyObject *tmp_called_instance_1; 1062         PyObject *tmp_called_instance_1;
n 1146         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]); n 1063         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
1147 1064
1148         if (unlikely(tmp_called_instance_1 == NULL)) { 1065         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1149             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]); n 1066             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]);
1150         } 1067         }
1151 1068
1152         assert(!(tmp_called_instance_1 == NULL)); 1069         assert(!(tmp_called_instance_1 == NULL));
1153         frame_3ac80f34a64de8ebdb27687f18d2a253->m_frame.f_lineno = 34; 1070         frame_3ac80f34a64de8ebdb27687f18d2a253->m_frame.f_lineno = 34;
1154         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1071         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1155             tstate, 1072             tstate,
1156             tmp_called_instance_1, 1073             tmp_called_instance_1,
n 1157             mod_consts[11], n 1074             mod_consts[10],
1158             &PyTuple_GET_ITEM(mod_consts[12], 0) 1075             &PyTuple_GET_ITEM(mod_consts[11], 0)
1159         ); 1076         );
1160 1077
1161         if (tmp_iter_arg_1 == NULL) { 1078         if (tmp_iter_arg_1 == NULL) {
1162             assert(HAS_ERROR_OCCURRED(tstate)); 1079             assert(HAS_ERROR_OCCURRED(tstate));
1163 1080
1213     } 1130     }
1214     { 1131     {
1215         PyObject *tmp_assign_source_7; 1132         PyObject *tmp_assign_source_7;
1216         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1133         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1217         tmp_assign_source_7 = tmp_for_loop_1__iter_value; 1134         tmp_assign_source_7 = tmp_for_loop_1__iter_value;
n 1218         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_7); n 1135         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_7);
1219     } 1136     }
1220     { 1137     {
1221         PyObject *tmp_called_value_1; 1138         PyObject *tmp_called_value_1;
1222         PyObject *tmp_call_result_1; 1139         PyObject *tmp_call_result_1;
n 1223         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]); n 1140         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
1224 1141
1225         if (unlikely(tmp_called_value_1 == NULL)) { 1142         if (unlikely(tmp_called_value_1 == NULL)) {
n 1226             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[10]); n 1143             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]);
1227         } 1144         }
1228 1145
1229         if (tmp_called_value_1 == NULL) { 1146         if (tmp_called_value_1 == NULL) {
1230             assert(HAS_ERROR_OCCURRED(tstate)); 1147             assert(HAS_ERROR_OCCURRED(tstate));
1231 1148
1291     Py_XDECREF(tmp_for_loop_1__iter_value); 1208     Py_XDECREF(tmp_for_loop_1__iter_value);
1292     tmp_for_loop_1__iter_value = NULL; 1209     tmp_for_loop_1__iter_value = NULL;
1293     CHECK_OBJECT(tmp_for_loop_1__for_iterator); 1210     CHECK_OBJECT(tmp_for_loop_1__for_iterator);
1294     Py_DECREF(tmp_for_loop_1__for_iterator); 1211     Py_DECREF(tmp_for_loop_1__for_iterator);
1295     tmp_for_loop_1__for_iterator = NULL; 1212     tmp_for_loop_1__for_iterator = NULL;
t 1296     tmp_print_value = mod_consts[14]; t 1213     tmp_print_value = mod_consts[13];
1297     tmp_result = PRINT_ITEM(tmp_print_value); 1214     tmp_result = PRINT_ITEM(tmp_print_value);
1298     if (tmp_result == false) { 1215     if (tmp_result == false) {
1299         assert(HAS_ERROR_OCCURRED(tstate)); 1216         assert(HAS_ERROR_OCCURRED(tstate));
1300 1217
1301         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 1218         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);