Construct UnpackIterator

Performance Diagrams

Construct UnpackIterator 00100000010000002000000200000030000003000000400000040000005000000500000060000006000000700000070000008000000800000090000009000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)968838489.78846153846155257.0CPython 3.106698295244.59615384615387333.2662785939565Nuitka (main)6698676399.4038461538462333.25656067179955Nuitka (develop)6700173554.2115384615385333.21837765482076Nuitka (factory)Construct UnpackIteratorTicks Construct UnpackIterator 001000000100000020000002000000300000030000004000000400000050000005000000600000060000007000000700000080000008000000900000090000001000000010000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)1023964288.95192307692307257.0CPython 3.86669063242.31730769230768343.16951675504043Nuitka (main)6655868395.6826923076923343.48795440159097Nuitka (develop)6649307549.0480769230769343.64629236286555Nuitka (factory)Construct UnpackIteratorTicks Construct UnpackIterator 001000000100000020000002000000300000030000004000000400000050000005000000600000060000007000000700000080000008000000900000090000001000000010000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)1059889288.95192307692307257.0CPython 2.75300310242.31730769230768380.5375479669152Nuitka (main)5299836395.6826923076923380.54859937609154Nuitka (develop)5299389549.0480769230769380.5590212746186Nuitka (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_e44b7c4f1ccc53fae963435edbe3db0a; 82 static PyCodeObject *codeobj_e44b7c4f1ccc53fae963435edbe3db0a;
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_16eb4c991c6d6c33f651f80c786d7c91 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[14], NULL, NULL, 0, 0, 0); 88     codeobj_16eb4c991c6d6c33f651f80c786d7c91 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[13], mod_consts[13], NULL, NULL, 0, 0, 0);
89     codeobj_main = codeobj_16eb4c991c6d6c33f651f80c786d7c91; 89     codeobj_main = codeobj_16eb4c991c6d6c33f651f80c786d7c91;
n 90     codeobj_e44b7c4f1ccc53fae963435edbe3db0a = 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_e44b7c4f1ccc53fae963435edbe3db0a = 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_e44b7c4f1ccc53fae963435edbe3db0a; 109     struct Nuitka_FrameObject *frame_e44b7c4f1ccc53fae963435edbe3db0a;
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_e44b7c4f1ccc53fae963435edbe3db0a = 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_e44b7c4f1ccc53fae963435edbe3db0a = 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_e44b7c4f1ccc53fae963435edbe3db0a)) { 124     if (isFrameUnusable(cache_frame_e44b7c4f1ccc53fae963435edbe3db0a)) {
137         Py_XDECREF(cache_frame_e44b7c4f1ccc53fae963435edbe3db0a); 125         Py_XDECREF(cache_frame_e44b7c4f1ccc53fae963435edbe3db0a);
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(2); 283         tmp_return_value = MAKE_TUPLE_EMPTY(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_e44b7c4f1ccc53fae963435edbe3db0a, 359         codeobj_e44b7c4f1ccc53fae963435edbe3db0a,
538         NULL, 360         NULL,
918 740
919     // Module code. 741     // Module code.
920     { 742     {
921         PyObject *tmp_assign_source_1; 743         PyObject *tmp_assign_source_1;
922         tmp_assign_source_1 = Py_None; 744         tmp_assign_source_1 = Py_None;
n 923         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 745         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
924     } 746     }
925     { 747     {
926         PyObject *tmp_assign_source_2; 748         PyObject *tmp_assign_source_2;
n 927         tmp_assign_source_2 = mod_consts[4]; n 749         tmp_assign_source_2 = mod_consts[3];
928         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 750         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
929     } 751     }
930     frame_16eb4c991c6d6c33f651f80c786d7c91 = MAKE_MODULE_FRAME(codeobj_16eb4c991c6d6c33f651f80c786d7c91, module___main__); 752     frame_16eb4c991c6d6c33f651f80c786d7c91 = MAKE_MODULE_FRAME(codeobj_16eb4c991c6d6c33f651f80c786d7c91, module___main__);
931 753
932     // Push the new frame as the currently active one, and we should be exclusively 754     // Push the new frame as the currently active one, and we should be exclusively
933     // owning it. 755     // owning it.
939         PyObject *tmp_assign_source_3; 761         PyObject *tmp_assign_source_3;
940         PyObject *tmp_name_value_1; 762         PyObject *tmp_name_value_1;
941         PyObject *tmp_globals_arg_value_1; 763         PyObject *tmp_globals_arg_value_1;
942         PyObject *tmp_locals_arg_value_1; 764         PyObject *tmp_locals_arg_value_1;
943         PyObject *tmp_fromlist_value_1; 765         PyObject *tmp_fromlist_value_1;
n 944         tmp_name_value_1 = mod_consts[6]; n 766         tmp_name_value_1 = mod_consts[5];
945         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 767         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
946         tmp_locals_arg_value_1 = Py_None; 768         tmp_locals_arg_value_1 = Py_None;
947         tmp_fromlist_value_1 = Py_None; 769         tmp_fromlist_value_1 = Py_None;
948         frame_16eb4c991c6d6c33f651f80c786d7c91->m_frame.f_lineno = 4; 770         frame_16eb4c991c6d6c33f651f80c786d7c91->m_frame.f_lineno = 4;
949         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); 771         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);
955 777
956             exception_lineno = 4; 778             exception_lineno = 4;
957 779
958             goto frame_exception_exit_1; 780             goto frame_exception_exit_1;
959         } 781         }
n 960         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 782         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
961     } 783     }
962     { 784     {
963         PyObject *tmp_assign_source_4; 785         PyObject *tmp_assign_source_4;
n 964         tmp_assign_source_4 = mod_consts[7]; n 786         tmp_assign_source_4 = mod_consts[6];
965         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4); 787         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4);
966     } 788     }
967     { 789     {
968         PyObject *tmp_assign_source_5; 790         PyObject *tmp_assign_source_5;
n 969         tmp_assign_source_5 = mod_consts[8]; n 791         tmp_assign_source_5 = mod_consts[7];
970         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_5); 792         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_5);
971     } 793     }
972     { 794     {
973         PyObject *tmp_assign_source_6; 795         PyObject *tmp_assign_source_6;
974 796
975 797
976         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 798         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
977 799
n 978         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_6); n 800         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_6);
979     } 801     }
980     { 802     {
981         PyObject *tmp_assign_source_7; 803         PyObject *tmp_assign_source_7;
982         PyObject *tmp_iter_arg_1; 804         PyObject *tmp_iter_arg_1;
983         PyObject *tmp_called_instance_1; 805         PyObject *tmp_called_instance_1;
n 984         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[6]); n 806         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[5]);
985 807
986         if (unlikely(tmp_called_instance_1 == NULL)) { 808         if (unlikely(tmp_called_instance_1 == NULL)) {
n 987             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[6]); n 809             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[5]);
988         } 810         }
989 811
990         assert(!(tmp_called_instance_1 == NULL)); 812         assert(!(tmp_called_instance_1 == NULL));
991         frame_16eb4c991c6d6c33f651f80c786d7c91->m_frame.f_lineno = 26; 813         frame_16eb4c991c6d6c33f651f80c786d7c91->m_frame.f_lineno = 26;
992         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 814         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
993             tstate, 815             tstate,
994             tmp_called_instance_1, 816             tmp_called_instance_1,
n 995             mod_consts[10], n 817             mod_consts[9],
996             &PyTuple_GET_ITEM(mod_consts[11], 0) 818             &PyTuple_GET_ITEM(mod_consts[10], 0)
997         ); 819         );
998 820
999         if (tmp_iter_arg_1 == NULL) { 821         if (tmp_iter_arg_1 == NULL) {
1000             assert(HAS_ERROR_OCCURRED(tstate)); 822             assert(HAS_ERROR_OCCURRED(tstate));
1001 823
1051     } 873     }
1052     { 874     {
1053         PyObject *tmp_assign_source_9; 875         PyObject *tmp_assign_source_9;
1054         CHECK_OBJECT(tmp_for_loop_1__iter_value); 876         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1055         tmp_assign_source_9 = tmp_for_loop_1__iter_value; 877         tmp_assign_source_9 = tmp_for_loop_1__iter_value;
n 1056         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_9); n 878         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_9);
1057     } 879     }
1058     { 880     {
1059         PyObject *tmp_called_value_1; 881         PyObject *tmp_called_value_1;
1060         PyObject *tmp_call_result_1; 882         PyObject *tmp_call_result_1;
n 1061         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]); n 883         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
1062 884
1063         if (unlikely(tmp_called_value_1 == NULL)) { 885         if (unlikely(tmp_called_value_1 == NULL)) {
n 1064             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]); n 886             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]);
1065         } 887         }
1066 888
1067         if (tmp_called_value_1 == NULL) { 889         if (tmp_called_value_1 == NULL) {
1068             assert(HAS_ERROR_OCCURRED(tstate)); 890             assert(HAS_ERROR_OCCURRED(tstate));
1069 891
1129     Py_XDECREF(tmp_for_loop_1__iter_value); 951     Py_XDECREF(tmp_for_loop_1__iter_value);
1130     tmp_for_loop_1__iter_value = NULL; 952     tmp_for_loop_1__iter_value = NULL;
1131     CHECK_OBJECT(tmp_for_loop_1__for_iterator); 953     CHECK_OBJECT(tmp_for_loop_1__for_iterator);
1132     Py_DECREF(tmp_for_loop_1__for_iterator); 954     Py_DECREF(tmp_for_loop_1__for_iterator);
1133     tmp_for_loop_1__for_iterator = NULL; 955     tmp_for_loop_1__for_iterator = NULL;
t 1134     tmp_print_value = mod_consts[13]; t 956     tmp_print_value = mod_consts[12];
1135     tmp_result = PRINT_ITEM(tmp_print_value); 957     tmp_result = PRINT_ITEM(tmp_print_value);
1136     if (tmp_result == false) { 958     if (tmp_result == false) {
1137         assert(HAS_ERROR_OCCURRED(tstate)); 959         assert(HAS_ERROR_OCCURRED(tstate));
1138 960
1139         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 961         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);