Construct UnpackIterator

Performance Diagrams

Construct UnpackIterator 001000000100000020000002000000300000030000004000000400000050000005000000600000060000007000000700000080000008000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)854555189.78846153846155257.0CPython 2.77052004244.59615384615387300.1895428798159Nuitka (main)7051971399.4038461538462300.1904971550514Nuitka (develop)7051971554.2115384615385300.1904971550514Nuitka (factory)Construct UnpackIteratorTicks Construct UnpackIterator 00100000010000002000000200000030000003000000400000040000005000000500000060000006000000700000070000008000000800000090000009000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)913997489.78846153846155257.0CPython 3.85651752244.59615384615387351.3102596521441Nuitka (main)5651739399.4038461538462351.310611130168Nuitka (develop)5651739554.2115384615385351.310611130168Nuitka (factory)Construct UnpackIteratorTicks

Source Code with Construct

module_var = 1
range_arg = 2

def calledRepeatedly():
    global module_var
    c = module_var

    iterator=iter(range(range_arg))

# construct_begin
    a, b = iterator
# construct_alternative




    return a, b

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

print("OK.")

Source Code without Construct

module_var = 1
range_arg = 2

def calledRepeatedly():
    global module_var
    c = module_var

    iterator=iter(range(range_arg))

# construct_begin

# construct_alternative
    a = c
    b = c
# construct_end

    return a, b

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

print("OK.")

Context Diff of Source Code


Construct
Baseline
25     c = module_var 25     c = module_var
26 26
27     iterator=iter(range(range_arg)) 27     iterator=iter(range(range_arg))
28 28
29 # construct_begin 29 # construct_begin
n 30     a, b = iterator n 30  
31 # construct_alternative 31 # construct_alternative
t 32   t 32     a = c
33   33     b = c
34   34 # construct_end
35 35
36     return a, b 36     return a, b
37 37
38 import itertools 38 import itertools
39 for x in itertools.repeat(None, 50000): 39 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[20]; n 36 static PyObject *mod_consts[19];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[20]; n 38 static Py_hash_t mod_consts_hash[19];
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(&mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(&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 < 20; i++) { n 53         for(int i = 0; i < 19; i++) {
54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(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__(void) { 69 void checkModuleConstants___main__(void) {
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 < 20; i++) { n 73     for(int i = 0; i < 19; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(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_5dc40c38ea746e894f7df6968dabc03f; 82 static PyCodeObject *codeobj_5dc40c38ea746e894f7df6968dabc03f;
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_2abd804b931227e495b59c4eeda17b56 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[18], NULL, NULL, 0, 0, 0); 88     codeobj_2abd804b931227e495b59c4eeda17b56 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[17], NULL, NULL, 0, 0, 0);
89     codeobj_5dc40c38ea746e894f7df6968dabc03f = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[10], mod_consts[19], NULL, 0, 0, 0); 89     codeobj_5dc40c38ea746e894f7df6968dabc03f = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[18], NULL, 0, 0, 0);
90 } 90 }
91 91
92 // The module function declarations. 92 // The module function declarations.
93 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 93 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
94 94
103     // Local variable declarations. 103     // Local variable declarations.
104     PyObject *var_c = NULL; 104     PyObject *var_c = NULL;
105     PyObject *var_iterator = NULL; 105     PyObject *var_iterator = NULL;
106     PyObject *var_a = NULL; 106     PyObject *var_a = NULL;
107     PyObject *var_b = NULL; 107     PyObject *var_b = NULL;
n 108     PyObject *tmp_tuple_unpack_1__element_1 = NULL; n
109     PyObject *tmp_tuple_unpack_1__element_2 = NULL;
110     PyObject *tmp_tuple_unpack_1__source_iter = NULL;
111     struct Nuitka_FrameObject *frame_5dc40c38ea746e894f7df6968dabc03f; 108     struct Nuitka_FrameObject *frame_5dc40c38ea746e894f7df6968dabc03f;
112     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 109     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
113     PyObject *exception_type = NULL; 110     PyObject *exception_type = NULL;
114     PyObject *exception_value = NULL; 111     PyObject *exception_value = NULL;
115     PyTracebackObject *exception_tb = NULL; 112     PyTracebackObject *exception_tb = NULL;
116     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 113     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 117     PyObject *tmp_iterator_attempt; n 114     static struct Nuitka_FrameObject *cache_frame_5dc40c38ea746e894f7df6968dabc03f = NULL;
115     PyObject *tmp_return_value = NULL;
118     PyObject *exception_keeper_type_1; 116     PyObject *exception_keeper_type_1;
119     PyObject *exception_keeper_value_1; 117     PyObject *exception_keeper_value_1;
120     PyTracebackObject *exception_keeper_tb_1; 118     PyTracebackObject *exception_keeper_tb_1;
121     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 119     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 122     PyObject *exception_keeper_type_2; n
123     PyObject *exception_keeper_value_2;
124     PyTracebackObject *exception_keeper_tb_2;
125     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
126     static struct Nuitka_FrameObject *cache_frame_5dc40c38ea746e894f7df6968dabc03f = NULL;
127     PyObject *tmp_return_value = NULL;
128     PyObject *exception_keeper_type_3;
129     PyObject *exception_keeper_value_3;
130     PyTracebackObject *exception_keeper_tb_3;
131     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_3;
132 120
133     // Actual function body. 121     // Actual function body.
134     // Tried code: 122     // Tried code:
135     if (isFrameUnusable(cache_frame_5dc40c38ea746e894f7df6968dabc03f)) { 123     if (isFrameUnusable(cache_frame_5dc40c38ea746e894f7df6968dabc03f)) {
136         Py_XDECREF(cache_frame_5dc40c38ea746e894f7df6968dabc03f); 124         Py_XDECREF(cache_frame_5dc40c38ea746e894f7df6968dabc03f);
225             goto frame_exception_exit_1; 213             goto frame_exception_exit_1;
226         } 214         }
227         assert(var_iterator == NULL); 215         assert(var_iterator == NULL);
228         var_iterator = tmp_assign_source_2; 216         var_iterator = tmp_assign_source_2;
229     } 217     }
n 230     // Tried code: n
231     {
232         PyObject *tmp_assign_source_3;
233         PyObject *tmp_iter_arg_2;
234         CHECK_OBJECT(var_iterator);
235         tmp_iter_arg_2 = var_iterator;
236         tmp_assign_source_3 = MAKE_UNPACK_ITERATOR(tmp_iter_arg_2);
237         if (tmp_assign_source_3 == NULL) {
238             assert(ERROR_OCCURRED());
239  
240             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
241  
242  
243             exception_lineno = 30;
244             type_description_1 = "oooo";
245             goto try_except_handler_2;
246         }
247         assert(tmp_tuple_unpack_1__source_iter == NULL);
248         tmp_tuple_unpack_1__source_iter = tmp_assign_source_3;
249     }
250     // Tried code:
251     {
252         PyObject *tmp_assign_source_4;
253         PyObject *tmp_unpack_1;
254         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
255         tmp_unpack_1 = tmp_tuple_unpack_1__source_iter;
256         tmp_assign_source_4 = UNPACK_NEXT(tmp_unpack_1, 0, 2);
257         if (tmp_assign_source_4 == NULL) {
258             if (!ERROR_OCCURRED()) {
259                 exception_type = PyExc_StopIteration;
260                 Py_INCREF(exception_type);
261                 exception_value = NULL;
262                 exception_tb = NULL;
263             } else {
264                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
265             }
266  
267  
268             type_description_1 = "oooo";
269             exception_lineno = 30;
270             goto try_except_handler_3;
271         }
272         assert(tmp_tuple_unpack_1__element_1 == NULL);
273         tmp_tuple_unpack_1__element_1 = tmp_assign_source_4;
274     }
275     {
276         PyObject *tmp_assign_source_5;
277         PyObject *tmp_unpack_2;
278         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
279         tmp_unpack_2 = tmp_tuple_unpack_1__source_iter;
280         tmp_assign_source_5 = UNPACK_NEXT(tmp_unpack_2, 1, 2);
281         if (tmp_assign_source_5 == NULL) {
282             if (!ERROR_OCCURRED()) {
283                 exception_type = PyExc_StopIteration;
284                 Py_INCREF(exception_type);
285                 exception_value = NULL;
286                 exception_tb = NULL;
287             } else {
288                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
289             }
290  
291  
292             type_description_1 = "oooo";
293             exception_lineno = 30;
294             goto try_except_handler_3;
295         }
296         assert(tmp_tuple_unpack_1__element_2 == NULL);
297         tmp_tuple_unpack_1__element_2 = tmp_assign_source_5;
298     }
299     {
300         PyObject *tmp_iterator_name_1;
301         CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
302         tmp_iterator_name_1 = tmp_tuple_unpack_1__source_iter;
303         // Check if iterator has left-over elements.
304         CHECK_OBJECT(tmp_iterator_name_1); assert(HAS_ITERNEXT(tmp_iterator_name_1));
305  
306         tmp_iterator_attempt = (*Py_TYPE(tmp_iterator_name_1)->tp_iternext)(tmp_iterator_name_1);
307  
308         if (likely(tmp_iterator_attempt == NULL)) {
309             PyObject *error = GET_ERROR_OCCURRED();
310  
311             if (error != NULL) {
312                 if (EXCEPTION_MATCH_BOOL_SINGLE(error, PyExc_StopIteration)) {
313                     CLEAR_ERROR_OCCURRED();
314                 } else {
315                     FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
316  
317                     type_description_1 = "oooo";
318                     exception_lineno = 30;
319                     goto try_except_handler_3;
320                 }
321             }
322         } else {
323             Py_DECREF(tmp_iterator_attempt);
324  
325             exception_type = PyExc_ValueError;
326             Py_INCREF(PyExc_ValueError);
327             exception_value = mod_consts[2];
328             Py_INCREF(exception_value);
329             exception_tb = NULL;
330  
331             type_description_1 = "oooo";
332             exception_lineno = 30;
333             goto try_except_handler_3;
334         }
335     }
336     goto try_end_1;
337     // Exception handler code:
338     try_except_handler_3:;
339     exception_keeper_type_1 = exception_type;
340     exception_keeper_value_1 = exception_value;
341     exception_keeper_tb_1 = exception_tb;
342     exception_keeper_lineno_1 = exception_lineno;
343     exception_type = NULL;
344     exception_value = NULL;
345     exception_tb = NULL;
346     exception_lineno = 0;
347  
348     CHECK_OBJECT(tmp_tuple_unpack_1__source_iter);
349     Py_DECREF(tmp_tuple_unpack_1__source_iter);
350     tmp_tuple_unpack_1__source_iter = NULL;
351     // Re-raise.
352     exception_type = exception_keeper_type_1;
353     exception_value = exception_keeper_value_1;
354     exception_tb = exception_keeper_tb_1;
355     exception_lineno = exception_keeper_lineno_1;
356  
357     goto try_except_handler_2;
358     // End of try:
359     try_end_1:;
360     goto try_end_2;
361     // Exception handler code:
362     try_except_handler_2:;
363     exception_keeper_type_2 = exception_type;
364     exception_keeper_value_2 = exception_value;
365     exception_keeper_tb_2 = exception_tb;
366     exception_keeper_lineno_2 = exception_lineno;
367     exception_type = NULL;
368     exception_value = NULL;
369     exception_tb = NULL;
370     exception_lineno = 0;
371  
372     Py_XDECREF(tmp_tuple_unpack_1__element_1);
373     tmp_tuple_unpack_1__element_1 = NULL;
374     Py_XDECREF(tmp_tuple_unpack_1__element_2);
375     tmp_tuple_unpack_1__element_2 = NULL;
376     // Re-raise.
377     exception_type = exception_keeper_type_2;
378     exception_value = exception_keeper_value_2;
379     exception_tb = exception_keeper_tb_2;
380     exception_lineno = exception_keeper_lineno_2;
381  
382     goto frame_exception_exit_1;
383     // End of try:
384     try_end_2:;
385 218
386 #if 0 219 #if 0
387     RESTORE_FRAME_EXCEPTION(frame_5dc40c38ea746e894f7df6968dabc03f); 220     RESTORE_FRAME_EXCEPTION(frame_5dc40c38ea746e894f7df6968dabc03f);
388 #endif 221 #endif
389 222
433 266
434     // Return the error. 267     // Return the error.
435     goto try_except_handler_1; 268     goto try_except_handler_1;
436 269
437     frame_no_exception_1:; 270     frame_no_exception_1:;
n 438     CHECK_OBJECT(tmp_tuple_unpack_1__source_iter); n
439     Py_DECREF(tmp_tuple_unpack_1__source_iter);
440     tmp_tuple_unpack_1__source_iter = NULL;
441     { 271     {
n 442         PyObject *tmp_assign_source_6; n 272         PyObject *tmp_assign_source_3;
443         CHECK_OBJECT(tmp_tuple_unpack_1__element_1); 273         CHECK_OBJECT(var_c);
444         tmp_assign_source_6 = tmp_tuple_unpack_1__element_1; 274         tmp_assign_source_3 = var_c;
445         assert(var_a == NULL); 275         assert(var_a == NULL);
n 446         Py_INCREF(tmp_assign_source_6); n 276         Py_INCREF(tmp_assign_source_3);
447         var_a = tmp_assign_source_6; 277         var_a = tmp_assign_source_3;
448     }
449     Py_XDECREF(tmp_tuple_unpack_1__element_1);
450     tmp_tuple_unpack_1__element_1 = NULL;
451  
452     { 278     }
279     {
453         PyObject *tmp_assign_source_7; 280         PyObject *tmp_assign_source_4;
454         CHECK_OBJECT(tmp_tuple_unpack_1__element_2); 281         CHECK_OBJECT(var_c);
455         tmp_assign_source_7 = tmp_tuple_unpack_1__element_2; 282         tmp_assign_source_4 = var_c;
456         assert(var_b == NULL); 283         assert(var_b == NULL);
n 457         Py_INCREF(tmp_assign_source_7); n 284         Py_INCREF(tmp_assign_source_4);
458         var_b = tmp_assign_source_7; 285         var_b = tmp_assign_source_4;
459     } 286     }
n 460     Py_XDECREF(tmp_tuple_unpack_1__element_2); n
461     tmp_tuple_unpack_1__element_2 = NULL;
462  
463     { 287     {
464         PyObject *tmp_tuple_element_1; 288         PyObject *tmp_tuple_element_1;
465         CHECK_OBJECT(var_a); 289         CHECK_OBJECT(var_a);
466         tmp_tuple_element_1 = var_a; 290         tmp_tuple_element_1 = var_a;
467         tmp_return_value = PyTuple_New(2); 291         tmp_return_value = PyTuple_New(2);
488     Py_DECREF(var_b); 312     Py_DECREF(var_b);
489     var_b = NULL; 313     var_b = NULL;
490     goto function_return_exit; 314     goto function_return_exit;
491     // Exception handler code: 315     // Exception handler code:
492     try_except_handler_1:; 316     try_except_handler_1:;
n 493     exception_keeper_type_3 = exception_type; n 317     exception_keeper_type_1 = exception_type;
494     exception_keeper_value_3 = exception_value; 318     exception_keeper_value_1 = exception_value;
495     exception_keeper_tb_3 = exception_tb; 319     exception_keeper_tb_1 = exception_tb;
496     exception_keeper_lineno_3 = exception_lineno; 320     exception_keeper_lineno_1 = exception_lineno;
497     exception_type = NULL; 321     exception_type = NULL;
498     exception_value = NULL; 322     exception_value = NULL;
499     exception_tb = NULL; 323     exception_tb = NULL;
500     exception_lineno = 0; 324     exception_lineno = 0;
501 325
502     Py_XDECREF(var_c); 326     Py_XDECREF(var_c);
503     var_c = NULL; 327     var_c = NULL;
n 504     Py_XDECREF(var_iterator); n
505     var_iterator = NULL;
506     // Re-raise. 328     // Re-raise.
n 507     exception_type = exception_keeper_type_3; n 329     exception_type = exception_keeper_type_1;
508     exception_value = exception_keeper_value_3; 330     exception_value = exception_keeper_value_1;
509     exception_tb = exception_keeper_tb_3; 331     exception_tb = exception_keeper_tb_1;
510     exception_lineno = exception_keeper_lineno_3; 332     exception_lineno = exception_keeper_lineno_1;
511 333
512     goto function_exception_exit; 334     goto function_exception_exit;
513     // End of try: 335     // End of try:
514 336
515     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 337     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
535 357
536 358
537 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 359 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
538     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 360     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
539         impl___main__$$$function__1_calledRepeatedly, 361         impl___main__$$$function__1_calledRepeatedly,
n 540         mod_consts[10], n 362         mod_consts[9],
541 #if PYTHON_VERSION >= 0x300 363 #if PYTHON_VERSION >= 0x300
542         NULL, 364         NULL,
543 #endif 365 #endif
544         codeobj_5dc40c38ea746e894f7df6968dabc03f, 366         codeobj_5dc40c38ea746e894f7df6968dabc03f,
545         NULL, 367         NULL,
920 742
921     // Module code. 743     // Module code.
922     { 744     {
923         PyObject *tmp_assign_source_1; 745         PyObject *tmp_assign_source_1;
924         tmp_assign_source_1 = Py_None; 746         tmp_assign_source_1 = Py_None;
n 925         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 747         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
926     } 748     }
927     { 749     {
928         PyObject *tmp_assign_source_2; 750         PyObject *tmp_assign_source_2;
n 929         tmp_assign_source_2 = mod_consts[4]; n 751         tmp_assign_source_2 = mod_consts[3];
930         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 752         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
931     } 753     }
932     { 754     {
933         PyObject *tmp_assign_source_3; 755         PyObject *tmp_assign_source_3;
934         tmp_assign_source_3 = Py_None; 756         tmp_assign_source_3 = Py_None;
n 935         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 757         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
936     } 758     }
937     { 759     {
938         PyObject *tmp_assign_source_4; 760         PyObject *tmp_assign_source_4;
939         tmp_assign_source_4 = PyDict_New(); 761         tmp_assign_source_4 = PyDict_New();
n 940         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4); n 762         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_4);
941     } 763     }
942     { 764     {
943         PyObject *tmp_assign_source_5; 765         PyObject *tmp_assign_source_5;
n 944         tmp_assign_source_5 = mod_consts[8]; n 766         tmp_assign_source_5 = mod_consts[7];
945         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 767         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
946     } 768     }
947     { 769     {
948         PyObject *tmp_assign_source_6; 770         PyObject *tmp_assign_source_6;
n 949         tmp_assign_source_6 = mod_consts[9]; n 771         tmp_assign_source_6 = mod_consts[8];
950         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6); 772         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6);
951     } 773     }
952     { 774     {
953         PyObject *tmp_assign_source_7; 775         PyObject *tmp_assign_source_7;
954 776
955 777
956         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 778         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
957 779
n 958         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_7); n 780         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_7);
959     } 781     }
960     { 782     {
961         PyObject *tmp_assign_source_8; 783         PyObject *tmp_assign_source_8;
962         PyObject *tmp_name_value_1; 784         PyObject *tmp_name_value_1;
963         PyObject *tmp_globals_arg_value_1; 785         PyObject *tmp_globals_arg_value_1;
964         PyObject *tmp_locals_arg_value_1; 786         PyObject *tmp_locals_arg_value_1;
965         PyObject *tmp_fromlist_value_1; 787         PyObject *tmp_fromlist_value_1;
966         PyObject *tmp_level_value_1; 788         PyObject *tmp_level_value_1;
n 967         tmp_name_value_1 = mod_consts[11]; n 789         tmp_name_value_1 = mod_consts[10];
968         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 790         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
969         tmp_locals_arg_value_1 = Py_None; 791         tmp_locals_arg_value_1 = Py_None;
970         tmp_fromlist_value_1 = Py_None; 792         tmp_fromlist_value_1 = Py_None;
n 971         tmp_level_value_1 = mod_consts[12]; n 793         tmp_level_value_1 = mod_consts[11];
972         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 794         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
973         assert(!(tmp_assign_source_8 == NULL)); 795         assert(!(tmp_assign_source_8 == NULL));
n 974         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_8); n 796         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8);
975     } 797     }
976     // Frame without reuse. 798     // Frame without reuse.
977     frame_2abd804b931227e495b59c4eeda17b56 = MAKE_MODULE_FRAME(codeobj_2abd804b931227e495b59c4eeda17b56, module___main__); 799     frame_2abd804b931227e495b59c4eeda17b56 = MAKE_MODULE_FRAME(codeobj_2abd804b931227e495b59c4eeda17b56, module___main__);
978 800
979     // Push the new frame as the currently active one, and we should be exclusively 801     // Push the new frame as the currently active one, and we should be exclusively
984     // Framed code: 806     // Framed code:
985     { 807     {
986         PyObject *tmp_assign_source_9; 808         PyObject *tmp_assign_source_9;
987         PyObject *tmp_iter_arg_1; 809         PyObject *tmp_iter_arg_1;
988         PyObject *tmp_called_instance_1; 810         PyObject *tmp_called_instance_1;
n 989         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[11]); n 811         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]);
990 812
991         if (unlikely(tmp_called_instance_1 == NULL)) { 813         if (unlikely(tmp_called_instance_1 == NULL)) {
n 992             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[11]); n 814             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[10]);
993         } 815         }
994 816
995         assert(!(tmp_called_instance_1 == NULL)); 817         assert(!(tmp_called_instance_1 == NULL));
996         frame_2abd804b931227e495b59c4eeda17b56->m_frame.f_lineno = 39; 818         frame_2abd804b931227e495b59c4eeda17b56->m_frame.f_lineno = 39;
997         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 819         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
998             tmp_called_instance_1, 820             tmp_called_instance_1,
n 999             mod_consts[13], n 821             mod_consts[12],
1000             &PyTuple_GET_ITEM(mod_consts[14], 0) 822             &PyTuple_GET_ITEM(mod_consts[13], 0)
1001         ); 823         );
1002 824
1003         if (tmp_iter_arg_1 == NULL) { 825         if (tmp_iter_arg_1 == NULL) {
1004             assert(ERROR_OCCURRED()); 826             assert(ERROR_OCCURRED());
1005 827
1055     } 877     }
1056     { 878     {
1057         PyObject *tmp_assign_source_11; 879         PyObject *tmp_assign_source_11;
1058         CHECK_OBJECT(tmp_for_loop_1__iter_value); 880         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1059         tmp_assign_source_11 = tmp_for_loop_1__iter_value; 881         tmp_assign_source_11 = tmp_for_loop_1__iter_value;
n 1060         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_11); n 882         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_11);
1061     } 883     }
1062     { 884     {
1063         PyObject *tmp_called_value_1; 885         PyObject *tmp_called_value_1;
1064         PyObject *tmp_call_result_1; 886         PyObject *tmp_call_result_1;
n 1065         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]); n 887         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
1066 888
1067         if (unlikely(tmp_called_value_1 == NULL)) { 889         if (unlikely(tmp_called_value_1 == NULL)) {
n 1068             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[10]); n 890             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[9]);
1069         } 891         }
1070 892
1071         if (tmp_called_value_1 == NULL) { 893         if (tmp_called_value_1 == NULL) {
1072             assert(ERROR_OCCURRED()); 894             assert(ERROR_OCCURRED());
1073 895
1136     Py_DECREF(tmp_for_loop_1__for_iterator); 958     Py_DECREF(tmp_for_loop_1__for_iterator);
1137     tmp_for_loop_1__for_iterator = NULL; 959     tmp_for_loop_1__for_iterator = NULL;
1138     { 960     {
1139         PyObject *tmp_called_value_2; 961         PyObject *tmp_called_value_2;
1140         PyObject *tmp_call_result_2; 962         PyObject *tmp_call_result_2;
n 1141         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[16]); n 963         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[15]);
1142         assert(tmp_called_value_2 != NULL); 964         assert(tmp_called_value_2 != NULL);
1143         frame_2abd804b931227e495b59c4eeda17b56->m_frame.f_lineno = 42; 965         frame_2abd804b931227e495b59c4eeda17b56->m_frame.f_lineno = 42;
t 1144         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_2, mod_consts[17]); t 966         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_2, mod_consts[16]);
1145 967
1146         if (tmp_call_result_2 == NULL) { 968         if (tmp_call_result_2 == NULL) {
1147             assert(ERROR_OCCURRED()); 969             assert(ERROR_OCCURRED());
1148 970
1149             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 971             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);