Construct UnpackIterator

Performance Diagrams

Construct UnpackIterator 00100000010000002000000200000030000003000000400000040000005000000500000060000006000000700000070000008000000800000090000009000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)968838489.78846153846155257.0CPython 3.106702013244.59615384615387333.17144595726495Nuitka (main)6700955399.4038461538462333.19843168335956Nuitka (develop)6700923554.2115384615385333.1992478867953Nuitka (factory)Construct UnpackIteratorTicks Construct UnpackIterator 001000000100000020000002000000300000030000004000000400000050000005000000600000060000007000000700000080000008000000900000090000001000000010000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)1023964288.95192307692307257.0CPython 3.86699830242.31730769230768342.42701042147314Nuitka (main)6698752395.6826923076923342.45302601700035Nuitka (develop)6698671549.0480769230769342.4549808066457Nuitka (factory)Construct UnpackIteratorTicks Construct UnpackIterator 001000000100000020000002000000300000030000004000000400000050000005000000600000060000007000000700000080000008000000900000090000001000000010000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)1059889288.95192307692307257.0CPython 2.75301339242.31730769230768380.5135566166147Nuitka (main)5301136395.6826923076923380.518289604089Nuitka (develop)5301136549.0480769230769380.518289604089Nuitka (factory)Construct UnpackIteratorTicks

Source Code with Construct

    return a, b


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

    b = c
    # construct_end

    return a, b


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
12     c = module_var 12     c = module_var
13 13
14     iterator = iter(range(range_arg)) 14     iterator = iter(range(range_arg))
15 15
16     # construct_begin 16     # construct_begin
n 17     a, b = iterator n 17  
18     # construct_alternative 18     # construct_alternative
t 19   t 19     a = c
20   20     b = c
21   21     # construct_end
22 22
23     return a, b 23     return a, b
24 24
25 25
26 for x in itertools.repeat(None, 50000): 26 for x in itertools.repeat(None, 50000):

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[16]; n 36 static PyObject *mod_consts[15];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[16]; n 38 static Py_hash_t mod_consts_hash[15];
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 < 16; i++) { n 53         for (int i = 0; i < 15; 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 < 16; i++) { n 73     for (int i = 0; i < 15; 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
82 static PyCodeObject *codeobj_99d088fcb47a38ad5cba0c41f56cb036; 82 static PyCodeObject *codeobj_99d088fcb47a38ad5cba0c41f56cb036;
83 /* For use in "MainProgram.c". */ 83 /* For use in "MainProgram.c". */
84 PyCodeObject *codeobj_main = NULL; 84 PyCodeObject *codeobj_main = NULL;
85 85
86 static void createModuleCodeObjects(void) { 86 static void createModuleCodeObjects(void) {
n 87     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj); n 87     module_filename_obj = mod_consts[3]; CHECK_OBJECT(module_filename_obj);
88     codeobj_1fd99189a4aaa52495221991ac92ba04 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[14], NULL, NULL, 0, 0, 0); 88     codeobj_1fd99189a4aaa52495221991ac92ba04 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[13], mod_consts[13], NULL, NULL, 0, 0, 0);
89     codeobj_main = codeobj_1fd99189a4aaa52495221991ac92ba04; 89     codeobj_main = codeobj_1fd99189a4aaa52495221991ac92ba04;
n 90     codeobj_99d088fcb47a38ad5cba0c41f56cb036 = MAKE_CODE_OBJECT(module_filename_obj, 10, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[9], mod_consts[15], NULL, 0, 0, 0); n 90     codeobj_99d088fcb47a38ad5cba0c41f56cb036 = MAKE_CODE_OBJECT(module_filename_obj, 10, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[8], mod_consts[14], NULL, 0, 0, 0);
91 } 91 }
92 92
93 // The module function declarations. 93 // The module function declarations.
94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
95 95
104     // Local variable declarations. 104     // Local variable declarations.
105     PyObject *var_c = NULL; 105     PyObject *var_c = NULL;
106     PyObject *var_iterator = NULL; 106     PyObject *var_iterator = NULL;
107     PyObject *var_a = NULL; 107     PyObject *var_a = NULL;
108     PyObject *var_b = NULL; 108     PyObject *var_b = NULL;
n 109     PyObject *tmp_tuple_unpack_1__element_1 = NULL; n
110     PyObject *tmp_tuple_unpack_1__element_2 = NULL;
111     PyObject *tmp_tuple_unpack_1__source_iter = NULL;
112     struct Nuitka_FrameObject *frame_99d088fcb47a38ad5cba0c41f56cb036; 109     struct Nuitka_FrameObject *frame_99d088fcb47a38ad5cba0c41f56cb036;
113     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 110     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
114     PyObject *exception_type = NULL; 111     PyObject *exception_type = NULL;
115     PyObject *exception_value = NULL; 112     PyObject *exception_value = NULL;
116     PyTracebackObject *exception_tb = NULL; 113     PyTracebackObject *exception_tb = NULL;
117     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 114     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 118     PyObject *tmp_iterator_attempt; n 115     static struct Nuitka_FrameObject *cache_frame_99d088fcb47a38ad5cba0c41f56cb036 = NULL;
116     PyObject *tmp_return_value = NULL;
119     PyObject *exception_keeper_type_1; 117     PyObject *exception_keeper_type_1;
120     PyObject *exception_keeper_value_1; 118     PyObject *exception_keeper_value_1;
121     PyTracebackObject *exception_keeper_tb_1; 119     PyTracebackObject *exception_keeper_tb_1;
122     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 120     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 123     PyObject *exception_keeper_type_2; n
124     PyObject *exception_keeper_value_2;
125     PyTracebackObject *exception_keeper_tb_2;
126     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
127     static struct Nuitka_FrameObject *cache_frame_99d088fcb47a38ad5cba0c41f56cb036 = NULL;
128     PyObject *tmp_return_value = NULL;
129     PyObject *exception_keeper_type_3;
130     PyObject *exception_keeper_value_3;
131     PyTracebackObject *exception_keeper_tb_3;
132     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_3;
133 121
134     // Actual function body. 122     // Actual function body.
135     // Tried code: 123     // Tried code:
136     if (isFrameUnusable(cache_frame_99d088fcb47a38ad5cba0c41f56cb036)) { 124     if (isFrameUnusable(cache_frame_99d088fcb47a38ad5cba0c41f56cb036)) {
137         Py_XDECREF(cache_frame_99d088fcb47a38ad5cba0c41f56cb036); 125         Py_XDECREF(cache_frame_99d088fcb47a38ad5cba0c41f56cb036);
226             goto frame_exception_exit_1; 214             goto frame_exception_exit_1;
227         } 215         }
228         assert(var_iterator == NULL); 216         assert(var_iterator == NULL);
229         var_iterator = tmp_assign_source_2; 217         var_iterator = tmp_assign_source_2;
230     } 218     }
n 231     // Tried code: n
232     {
233         PyObject *tmp_assign_source_3;
234         PyObject *tmp_iter_arg_2;
235         CHECK_OBJECT(var_iterator);
236         tmp_iter_arg_2 = var_iterator;
237         tmp_assign_source_3 = MAKE_ITERATOR(tstate, tmp_iter_arg_2);
238         if (tmp_assign_source_3 == NULL) {
239             assert(HAS_ERROR_OCCURRED(tstate));
240  
241             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
242  
243  
244             exception_lineno = 17;
245             type_description_1 = "oooo";
246             goto try_except_handler_2;
247         }
248         assert(tmp_tuple_unpack_1__source_iter == NULL);
249         tmp_tuple_unpack_1__source_iter = tmp_assign_source_3;
250     }
251     // Tried code:
252     {
253         PyObject *tmp_assign_source_4;
254         PyObject *tmp_unpack_1;
255         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
256         tmp_unpack_1 = tmp_tuple_unpack_1__source_iter;
257         tmp_assign_source_4 = UNPACK_NEXT(tstate, tmp_unpack_1, 0);
258         if (tmp_assign_source_4 == NULL) {
259             if (!HAS_ERROR_OCCURRED(tstate)) {
260                 exception_type = PyExc_StopIteration;
261                 Py_INCREF(exception_type);
262                 exception_value = NULL;
263                 exception_tb = NULL;
264             } else {
265                 FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
266             }
267  
268  
269             type_description_1 = "oooo";
270             exception_lineno = 17;
271             goto try_except_handler_3;
272         }
273         assert(tmp_tuple_unpack_1__element_1 == NULL);
274         tmp_tuple_unpack_1__element_1 = tmp_assign_source_4;
275     }
276     {
277         PyObject *tmp_assign_source_5;
278         PyObject *tmp_unpack_2;
279         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
280         tmp_unpack_2 = tmp_tuple_unpack_1__source_iter;
281         tmp_assign_source_5 = UNPACK_NEXT(tstate, tmp_unpack_2, 1);
282         if (tmp_assign_source_5 == NULL) {
283             if (!HAS_ERROR_OCCURRED(tstate)) {
284                 exception_type = PyExc_StopIteration;
285                 Py_INCREF(exception_type);
286                 exception_value = NULL;
287                 exception_tb = NULL;
288             } else {
289                 FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
290             }
291  
292  
293             type_description_1 = "oooo";
294             exception_lineno = 17;
295             goto try_except_handler_3;
296         }
297         assert(tmp_tuple_unpack_1__element_2 == NULL);
298         tmp_tuple_unpack_1__element_2 = tmp_assign_source_5;
299     }
300     {
301         PyObject *tmp_iterator_name_1;
302         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
303         tmp_iterator_name_1 = tmp_tuple_unpack_1__source_iter;
304         // Check if iterator has left-over elements.
305         CHECK_OBJECT(tmp_iterator_name_1); assert(HAS_ITERNEXT(tmp_iterator_name_1));
306  
307         tmp_iterator_attempt = (*Py_TYPE(tmp_iterator_name_1)->tp_iternext)(tmp_iterator_name_1);
308  
309         if (likely(tmp_iterator_attempt == NULL)) {
310             PyObject *error = GET_ERROR_OCCURRED(tstate);
311  
312             if (error != NULL) {
313                 if (EXCEPTION_MATCH_BOOL_SINGLE(tstate, error, PyExc_StopIteration)) {
314                     CLEAR_ERROR_OCCURRED(tstate);
315                 } else {
316                     FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
317  
318                     type_description_1 = "oooo";
319                     exception_lineno = 17;
320                     goto try_except_handler_3;
321                 }
322             }
323         } else {
324             Py_DECREF(tmp_iterator_attempt);
325  
326             exception_type = PyExc_ValueError;
327             Py_INCREF(PyExc_ValueError);
328             exception_value = mod_consts[2];
329             Py_INCREF(exception_value);
330             exception_tb = NULL;
331  
332             type_description_1 = "oooo";
333             exception_lineno = 17;
334             goto try_except_handler_3;
335         }
336     }
337     goto try_end_1;
338     // Exception handler code:
339     try_except_handler_3:;
340     exception_keeper_type_1 = exception_type;
341     exception_keeper_value_1 = exception_value;
342     exception_keeper_tb_1 = exception_tb;
343     exception_keeper_lineno_1 = exception_lineno;
344     exception_type = NULL;
345     exception_value = NULL;
346     exception_tb = NULL;
347     exception_lineno = 0;
348  
349     CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
350     Py_DECREF(tmp_tuple_unpack_1__source_iter);
351     tmp_tuple_unpack_1__source_iter = NULL;
352     // Re-raise.
353     exception_type = exception_keeper_type_1;
354     exception_value = exception_keeper_value_1;
355     exception_tb = exception_keeper_tb_1;
356     exception_lineno = exception_keeper_lineno_1;
357  
358     goto try_except_handler_2;
359     // End of try:
360     try_end_1:;
361     goto try_end_2;
362     // Exception handler code:
363     try_except_handler_2:;
364     exception_keeper_type_2 = exception_type;
365     exception_keeper_value_2 = exception_value;
366     exception_keeper_tb_2 = exception_tb;
367     exception_keeper_lineno_2 = exception_lineno;
368     exception_type = NULL;
369     exception_value = NULL;
370     exception_tb = NULL;
371     exception_lineno = 0;
372  
373     Py_XDECREF(tmp_tuple_unpack_1__element_1);
374     tmp_tuple_unpack_1__element_1 = NULL;
375     Py_XDECREF(tmp_tuple_unpack_1__element_2);
376     tmp_tuple_unpack_1__element_2 = NULL;
377     // Re-raise.
378     exception_type = exception_keeper_type_2;
379     exception_value = exception_keeper_value_2;
380     exception_tb = exception_keeper_tb_2;
381     exception_lineno = exception_keeper_lineno_2;
382  
383     goto frame_exception_exit_1;
384     // End of try:
385     try_end_2:;
386 219
387 220
388     // Put the previous frame back on top. 221     // Put the previous frame back on top.
389     popFrameStack(tstate); 222     popFrameStack(tstate);
390 223
425     popFrameStack(tstate); 258     popFrameStack(tstate);
426 259
427     // Return the error. 260     // Return the error.
428     goto try_except_handler_1; 261     goto try_except_handler_1;
429     frame_no_exception_1:; 262     frame_no_exception_1:;
n 430     CHECK_OBJECT(tmp_tuple_unpack_1__source_iter); n
431     Py_DECREF(tmp_tuple_unpack_1__source_iter);
432     tmp_tuple_unpack_1__source_iter = NULL;
433     { 263     {
n 434         PyObject *tmp_assign_source_6; n 264         PyObject *tmp_assign_source_3;
435         CHECK_OBJECT(tmp_tuple_unpack_1__element_1); 265         CHECK_OBJECT(var_c);
436         tmp_assign_source_6 = tmp_tuple_unpack_1__element_1; 266         tmp_assign_source_3 = var_c;
437         assert(var_a == NULL); 267         assert(var_a == NULL);
n 438         Py_INCREF(tmp_assign_source_6); n 268         Py_INCREF(tmp_assign_source_3);
439         var_a = tmp_assign_source_6; 269         var_a = tmp_assign_source_3;
440     }
441     Py_XDECREF(tmp_tuple_unpack_1__element_1);
442     tmp_tuple_unpack_1__element_1 = NULL;
443  
444     { 270     }
271     {
445         PyObject *tmp_assign_source_7; 272         PyObject *tmp_assign_source_4;
446         CHECK_OBJECT(tmp_tuple_unpack_1__element_2); 273         CHECK_OBJECT(var_c);
447         tmp_assign_source_7 = tmp_tuple_unpack_1__element_2; 274         tmp_assign_source_4 = var_c;
448         assert(var_b == NULL); 275         assert(var_b == NULL);
n 449         Py_INCREF(tmp_assign_source_7); n 276         Py_INCREF(tmp_assign_source_4);
450         var_b = tmp_assign_source_7; 277         var_b = tmp_assign_source_4;
451     } 278     }
n 452     Py_XDECREF(tmp_tuple_unpack_1__element_2); n
453     tmp_tuple_unpack_1__element_2 = NULL;
454  
455     { 279     {
456         PyObject *tmp_tuple_element_1; 280         PyObject *tmp_tuple_element_1;
457         CHECK_OBJECT(var_a); 281         CHECK_OBJECT(var_a);
458         tmp_tuple_element_1 = var_a; 282         tmp_tuple_element_1 = var_a;
459         tmp_return_value = MAKE_TUPLE_EMPTY(tstate, 2); 283         tmp_return_value = MAKE_TUPLE_EMPTY(tstate, 2);
480     Py_DECREF(var_b); 304     Py_DECREF(var_b);
481     var_b = NULL; 305     var_b = NULL;
482     goto function_return_exit; 306     goto function_return_exit;
483     // Exception handler code: 307     // Exception handler code:
484     try_except_handler_1:; 308     try_except_handler_1:;
n 485     exception_keeper_type_3 = exception_type; n 309     exception_keeper_type_1 = exception_type;
486     exception_keeper_value_3 = exception_value; 310     exception_keeper_value_1 = exception_value;
487     exception_keeper_tb_3 = exception_tb; 311     exception_keeper_tb_1 = exception_tb;
488     exception_keeper_lineno_3 = exception_lineno; 312     exception_keeper_lineno_1 = exception_lineno;
489     exception_type = NULL; 313     exception_type = NULL;
490     exception_value = NULL; 314     exception_value = NULL;
491     exception_tb = NULL; 315     exception_tb = NULL;
492     exception_lineno = 0; 316     exception_lineno = 0;
493 317
494     Py_XDECREF(var_c); 318     Py_XDECREF(var_c);
495     var_c = NULL; 319     var_c = NULL;
n 496     Py_XDECREF(var_iterator); n
497     var_iterator = NULL;
498     // Re-raise. 320     // Re-raise.
n 499     exception_type = exception_keeper_type_3; n 321     exception_type = exception_keeper_type_1;
500     exception_value = exception_keeper_value_3; 322     exception_value = exception_keeper_value_1;
501     exception_tb = exception_keeper_tb_3; 323     exception_tb = exception_keeper_tb_1;
502     exception_lineno = exception_keeper_lineno_3; 324     exception_lineno = exception_keeper_lineno_1;
503 325
504     goto function_exception_exit; 326     goto function_exception_exit;
505     // End of try: 327     // End of try:
506 328
507     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 329     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
528 350
529 351
530 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 352 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
531     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 353     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
532         impl___main__$$$function__1_calledRepeatedly, 354         impl___main__$$$function__1_calledRepeatedly,
n 533         mod_consts[9], n 355         mod_consts[8],
534 #if PYTHON_VERSION >= 0x300 356 #if PYTHON_VERSION >= 0x300
535         NULL, 357         NULL,
536 #endif 358 #endif
537         codeobj_99d088fcb47a38ad5cba0c41f56cb036, 359         codeobj_99d088fcb47a38ad5cba0c41f56cb036,
538         NULL, 360         NULL,
910 732
911     // Module code. 733     // Module code.
912     { 734     {
913         PyObject *tmp_assign_source_1; 735         PyObject *tmp_assign_source_1;
914         tmp_assign_source_1 = Py_None; 736         tmp_assign_source_1 = Py_None;
n 915         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 737         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
916     } 738     }
917     { 739     {
918         PyObject *tmp_assign_source_2; 740         PyObject *tmp_assign_source_2;
n 919         tmp_assign_source_2 = mod_consts[4]; n 741         tmp_assign_source_2 = mod_consts[3];
920         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 742         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
921     } 743     }
922     frame_1fd99189a4aaa52495221991ac92ba04 = MAKE_MODULE_FRAME(codeobj_1fd99189a4aaa52495221991ac92ba04, module___main__); 744     frame_1fd99189a4aaa52495221991ac92ba04 = MAKE_MODULE_FRAME(codeobj_1fd99189a4aaa52495221991ac92ba04, module___main__);
923 745
924     // Push the new frame as the currently active one, and we should be exclusively 746     // Push the new frame as the currently active one, and we should be exclusively
925     // owning it. 747     // owning it.
931         PyObject *tmp_assign_source_3; 753         PyObject *tmp_assign_source_3;
932         PyObject *tmp_name_value_1; 754         PyObject *tmp_name_value_1;
933         PyObject *tmp_globals_arg_value_1; 755         PyObject *tmp_globals_arg_value_1;
934         PyObject *tmp_locals_arg_value_1; 756         PyObject *tmp_locals_arg_value_1;
935         PyObject *tmp_fromlist_value_1; 757         PyObject *tmp_fromlist_value_1;
n 936         tmp_name_value_1 = mod_consts[6]; n 758         tmp_name_value_1 = mod_consts[5];
937         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 759         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
938         tmp_locals_arg_value_1 = Py_None; 760         tmp_locals_arg_value_1 = Py_None;
939         tmp_fromlist_value_1 = Py_None; 761         tmp_fromlist_value_1 = Py_None;
940         frame_1fd99189a4aaa52495221991ac92ba04->m_frame.f_lineno = 4; 762         frame_1fd99189a4aaa52495221991ac92ba04->m_frame.f_lineno = 4;
941         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); 763         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);
947 769
948             exception_lineno = 4; 770             exception_lineno = 4;
949 771
950             goto frame_exception_exit_1; 772             goto frame_exception_exit_1;
951         } 773         }
n 952         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 774         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
953     } 775     }
954     { 776     {
955         PyObject *tmp_assign_source_4; 777         PyObject *tmp_assign_source_4;
n 956         tmp_assign_source_4 = mod_consts[7]; n 778         tmp_assign_source_4 = mod_consts[6];
957         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4); 779         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4);
958     } 780     }
959     { 781     {
960         PyObject *tmp_assign_source_5; 782         PyObject *tmp_assign_source_5;
n 961         tmp_assign_source_5 = mod_consts[8]; n 783         tmp_assign_source_5 = mod_consts[7];
962         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_5); 784         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_5);
963     } 785     }
964     { 786     {
965         PyObject *tmp_assign_source_6; 787         PyObject *tmp_assign_source_6;
966 788
967 789
968         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 790         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
969 791
n 970         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_6); n 792         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_6);
971     } 793     }
972     { 794     {
973         PyObject *tmp_assign_source_7; 795         PyObject *tmp_assign_source_7;
974         PyObject *tmp_iter_arg_1; 796         PyObject *tmp_iter_arg_1;
975         PyObject *tmp_called_instance_1; 797         PyObject *tmp_called_instance_1;
n 976         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[6]); n 798         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[5]);
977 799
978         if (unlikely(tmp_called_instance_1 == NULL)) { 800         if (unlikely(tmp_called_instance_1 == NULL)) {
n 979             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[6]); n 801             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[5]);
980         } 802         }
981 803
982         assert(!(tmp_called_instance_1 == NULL)); 804         assert(!(tmp_called_instance_1 == NULL));
983         frame_1fd99189a4aaa52495221991ac92ba04->m_frame.f_lineno = 26; 805         frame_1fd99189a4aaa52495221991ac92ba04->m_frame.f_lineno = 26;
984         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 806         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
985             tstate, 807             tstate,
986             tmp_called_instance_1, 808             tmp_called_instance_1,
n 987             mod_consts[10], n 809             mod_consts[9],
988             &PyTuple_GET_ITEM(mod_consts[11], 0) 810             &PyTuple_GET_ITEM(mod_consts[10], 0)
989         ); 811         );
990 812
991         if (tmp_iter_arg_1 == NULL) { 813         if (tmp_iter_arg_1 == NULL) {
992             assert(HAS_ERROR_OCCURRED(tstate)); 814             assert(HAS_ERROR_OCCURRED(tstate));
993 815
1043     } 865     }
1044     { 866     {
1045         PyObject *tmp_assign_source_9; 867         PyObject *tmp_assign_source_9;
1046         CHECK_OBJECT(tmp_for_loop_1__iter_value); 868         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1047         tmp_assign_source_9 = tmp_for_loop_1__iter_value; 869         tmp_assign_source_9 = tmp_for_loop_1__iter_value;
n 1048         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_9); n 870         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_9);
1049     } 871     }
1050     { 872     {
1051         PyObject *tmp_called_value_1; 873         PyObject *tmp_called_value_1;
1052         PyObject *tmp_call_result_1; 874         PyObject *tmp_call_result_1;
n 1053         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]); n 875         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
1054 876
1055         if (unlikely(tmp_called_value_1 == NULL)) { 877         if (unlikely(tmp_called_value_1 == NULL)) {
n 1056             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]); n 878             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]);
1057         } 879         }
1058 880
1059         if (tmp_called_value_1 == NULL) { 881         if (tmp_called_value_1 == NULL) {
1060             assert(HAS_ERROR_OCCURRED(tstate)); 882             assert(HAS_ERROR_OCCURRED(tstate));
1061 883
1121     Py_XDECREF(tmp_for_loop_1__iter_value); 943     Py_XDECREF(tmp_for_loop_1__iter_value);
1122     tmp_for_loop_1__iter_value = NULL; 944     tmp_for_loop_1__iter_value = NULL;
1123     CHECK_OBJECT(tmp_for_loop_1__for_iterator); 945     CHECK_OBJECT(tmp_for_loop_1__for_iterator);
1124     Py_DECREF(tmp_for_loop_1__for_iterator); 946     Py_DECREF(tmp_for_loop_1__for_iterator);
1125     tmp_for_loop_1__for_iterator = NULL; 947     tmp_for_loop_1__for_iterator = NULL;
t 1126     tmp_print_value = mod_consts[13]; t 948     tmp_print_value = mod_consts[12];
1127     tmp_result = PRINT_ITEM(tmp_print_value); 949     tmp_result = PRINT_ITEM(tmp_print_value);
1128     if (tmp_result == false) { 950     if (tmp_result == false) {
1129         assert(HAS_ERROR_OCCURRED(tstate)); 951         assert(HAS_ERROR_OCCURRED(tstate));
1130 952
1131         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 953         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);