Construct FunctionCreationGeneratorClosure

Performance Diagrams

Construct FunctionCreationGeneratorClosure 00200000020000004000000400000060000006000000800000080000001000000010000000120000001200000014000000140000001600000016000000180000001800000020000000200000002200000022000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)2399202088.95192307692307257.0CPython 2.73302551242.31730769230768470.0994426239673Nuitka (master)3901791395.6826923076923463.9273311020145Nuitka (develop)3901791549.0480769230769463.9273311020145Nuitka (factory)Construct FunctionCreationGeneratorClosureTicks Construct FunctionCreationGeneratorClosure 0020000002000000400000040000006000000600000080000008000000100000001000000012000000120000001400000014000000160000001600000018000000180000002000000020000000220000002200000024000000240000002600000026000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)2620066188.95192307692307257.0CPython 3.84202515242.31730769230768464.47874680014314Nuitka (master)4402351395.6826923076923462.593964198666Nuitka (develop)4402351549.0480769230769462.593964198666Nuitka (factory)Construct FunctionCreationGeneratorClosureTicks

Source Code with Construct

module_var = None

def calledRepeatedly(x):
    # Force frame usage for now
    module_var

# construct_begin
    def empty():
        yield x
# construct_alternative




    return empty, x


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

print("OK.")

Source Code without Construct

module_var = None

def calledRepeatedly(x):
    # Force frame usage for now
    module_var

# construct_begin


# construct_alternative
    def empty():
        yield module_var
# construct_end

    return empty, x


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

print("OK.")

Context Diff of Source Code


Construct
Baseline
23 def calledRepeatedly(x): 23 def calledRepeatedly(x):
24     # Force frame usage for now 24     # Force frame usage for now
25     module_var 25     module_var
26 26
27 # construct_begin 27 # construct_begin
n 28     def empty(): n
29         yield x
30 # construct_alternative
31 28
32 29
t 33   t 30 # construct_alternative
31     def empty():
32         yield module_var
33 # construct_end
34 34
35     return empty, x 35     return empty, x
36 36
37 37
38 import itertools 38 import itertools

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[19]; n 36 static PyObject *mod_consts[18];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[19]; n 38 static Py_hash_t mod_consts_hash[18];
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 < 19; i++) { n 53         for(int i = 0; i < 18; 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 < 19; i++) { n 73     for(int i = 0; i < 18; 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
79 79
80 // The module code objects. 80 // The module code objects.
81 static PyCodeObject *codeobj_4f18bf361455e49230b1c1906473132f; 81 static PyCodeObject *codeobj_4f18bf361455e49230b1c1906473132f;
82 static PyCodeObject *codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5; 82 static PyCodeObject *codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5;
n 83 static PyCodeObject *codeobj_0e73f7a67ddfe654dfb689d56a1de47e; n 83 static PyCodeObject *codeobj_d20de09ba12226cd4fe439303866d72d;
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[5]; CHECK_OBJECT(module_filename_obj); n 88     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
89     codeobj_4f18bf361455e49230b1c1906473132f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], NULL, NULL, 0, 0, 0); 89     codeobj_4f18bf361455e49230b1c1906473132f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], NULL, NULL, 0, 0, 0);
n 90     codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[17], NULL, 1, 0, 0); n 90     codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[17], NULL, 1, 0, 0);
91     codeobj_0e73f7a67ddfe654dfb689d56a1de47e = MAKE_CODEOBJECT(module_filename_obj, 28, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS, mod_consts[1], mod_consts[18], mod_consts[18], 0, 0, 0); 91     codeobj_d20de09ba12226cd4fe439303866d72d = MAKE_CODEOBJECT(module_filename_obj, 31, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[1], NULL, NULL, 0, 0, 0);
92 } 92 }
93 93
94 // The module function declarations. 94 // The module function declarations.
n 95 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty(struct Nuitka_CellObject **closure); n 95 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty();
96 96
97 97
98 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 98 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
99 99
100 100
n 101 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(struct Nuitka_CellObject **closure); n 101 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty();
102 102
103 103
104 // The module function definitions. 104 // The module function definitions.
105 static PyObject *impl___main__$$$function__1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { 105 static PyObject *impl___main__$$$function__1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) {
106     // Preserve error status for checks 106     // Preserve error status for checks
107 #ifndef __NUITKA_NO_ASSERT__ 107 #ifndef __NUITKA_NO_ASSERT__
108     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 108     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
109 #endif 109 #endif
110 110
111     // Local variable declarations. 111     // Local variable declarations.
n 112     struct Nuitka_CellObject *par_x = Nuitka_Cell_New1(python_pars[0]); n 112     PyObject *par_x = python_pars[0];
113     PyObject *var_empty = NULL; 113     PyObject *var_empty = NULL;
114     struct Nuitka_FrameObject *frame_b0d6c1c98751bc63e87e0e94e96fa3e5; 114     struct Nuitka_FrameObject *frame_b0d6c1c98751bc63e87e0e94e96fa3e5;
115     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 115     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
116     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; 116     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
117     PyObject *exception_type = NULL; 117     PyObject *exception_type = NULL;
167 167
168             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 168             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
169 169
170 170
171             exception_lineno = 25; 171             exception_lineno = 25;
n 172             type_description_1 = "co"; n 172             type_description_1 = "oo";
173             goto frame_exception_exit_1; 173             goto frame_exception_exit_1;
174         } 174         }
175     } 175     }
176 176
177 #if 0 177 #if 0
224     goto try_except_handler_1; 224     goto try_except_handler_1;
225 225
226     frame_no_exception_1:; 226     frame_no_exception_1:;
227     { 227     {
228         PyObject *tmp_assign_source_1; 228         PyObject *tmp_assign_source_1;
n 229         struct Nuitka_CellObject *tmp_closure_1[1]; n
230 229
n 231         tmp_closure_1[0] = par_x; n
232         Py_INCREF(tmp_closure_1[0]);
233 230
n 234         tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(tmp_closure_1); n 231         tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty();
235 232
236         assert(var_empty == NULL); 233         assert(var_empty == NULL);
237         var_empty = tmp_assign_source_1; 234         var_empty = tmp_assign_source_1;
238     } 235     }
239     { 236     {
240         PyObject *tmp_tuple_element_1; 237         PyObject *tmp_tuple_element_1;
241         CHECK_OBJECT(var_empty); 238         CHECK_OBJECT(var_empty);
242         tmp_tuple_element_1 = var_empty; 239         tmp_tuple_element_1 = var_empty;
243         tmp_return_value = PyTuple_New(2); 240         tmp_return_value = PyTuple_New(2);
244         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1); 241         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1);
n 245         CHECK_OBJECT(Nuitka_Cell_GET(par_x)); n 242         CHECK_OBJECT(par_x);
246         tmp_tuple_element_1 = Nuitka_Cell_GET(par_x); 243         tmp_tuple_element_1 = par_x;
247         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1); 244         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1);
248         goto try_return_handler_1; 245         goto try_return_handler_1;
249     } 246     }
250     NUITKA_CANNOT_GET_HERE("tried codes exits in all cases"); 247     NUITKA_CANNOT_GET_HERE("tried codes exits in all cases");
251     return NULL; 248     return NULL;
306 303
307     // Local variable declarations. 304     // Local variable declarations.
308     PyObject *tmp_return_value = NULL; 305     PyObject *tmp_return_value = NULL;
309 306
310     // Actual function body. 307     // Actual function body.
n 311     { n
312         struct Nuitka_CellObject *tmp_closure_1[1];
313 308
n 314         tmp_closure_1[0] = self->m_closure[0]; n
315         Py_INCREF(tmp_closure_1[0]);
316 309
n 317         tmp_return_value = MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty(tmp_closure_1); n 310     tmp_return_value = MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty();
318 311
n 319         goto function_return_exit; n 312     goto function_return_exit;
320     }
321 313
322     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 314     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
323     return NULL; 315     return NULL;
324 316
325 317
376         } else { 368         } else {
377             count_released_frame_cache_instances += 1; 369             count_released_frame_cache_instances += 1;
378         } 370         }
379         count_allocated_frame_cache_instances += 1; 371         count_allocated_frame_cache_instances += 1;
380 #endif 372 #endif
n 381         cache_m_frame = MAKE_FUNCTION_FRAME(codeobj_0e73f7a67ddfe654dfb689d56a1de47e, module___main__, sizeof(void *)); n 373         cache_m_frame = MAKE_FUNCTION_FRAME(codeobj_d20de09ba12226cd4fe439303866d72d, module___main__, 0);
382 #if _DEBUG_REFCOUNTS 374 #if _DEBUG_REFCOUNTS
383     } else { 375     } else {
384         count_hit_frame_cache_instances += 1; 376         count_hit_frame_cache_instances += 1;
385 #endif 377 #endif
386     } 378     }
424 416
425     // Framed code: 417     // Framed code:
426     { 418     {
427         PyObject *tmp_expression_name_1; 419         PyObject *tmp_expression_name_1;
428         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_1; 420         NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_1;
n 429         if (Nuitka_Cell_GET(generator->m_closure[0]) == NULL) { n 421         tmp_expression_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
430 422
n 431             FORMAT_UNBOUND_CLOSURE_ERROR(&generator_heap->exception_type, &generator_heap->exception_value, mod_consts[3]); n 423         if (unlikely(tmp_expression_name_1 == NULL)) {
432             generator_heap->exception_tb = NULL; 424             tmp_expression_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[0]);
425         }
426  
427         if (tmp_expression_name_1 == NULL) {
428             assert(ERROR_OCCURRED());
429  
433             NORMALIZE_EXCEPTION(&generator_heap->exception_type, &generator_heap->exception_value, &generator_heap->exception_tb); 430             FETCH_ERROR_OCCURRED(&generator_heap->exception_type, &generator_heap->exception_value, &generator_heap->exception_tb);
434             CHAIN_EXCEPTION(generator_heap->exception_value);
435 431
n n 432  
436             generator_heap->exception_lineno = 29; 433             generator_heap->exception_lineno = 32;
437             generator_heap->type_description_1 = "c"; 434  
438             goto frame_exception_exit_1; 435             goto frame_exception_exit_1;
439         } 436         }
n 440   n
441         tmp_expression_name_1 = Nuitka_Cell_GET(generator->m_closure[0]);
442         Py_INCREF(tmp_expression_name_1); 437         Py_INCREF(tmp_expression_name_1);
443         generator->m_yield_return_index = 1; 438         generator->m_yield_return_index = 1;
444         return tmp_expression_name_1; 439         return tmp_expression_name_1;
445         yield_return_1: 440         yield_return_1:
446         if (yield_return_value == NULL) { 441         if (yield_return_value == NULL) {
447             assert(ERROR_OCCURRED()); 442             assert(ERROR_OCCURRED());
448 443
449             FETCH_ERROR_OCCURRED(&generator_heap->exception_type, &generator_heap->exception_value, &generator_heap->exception_tb); 444             FETCH_ERROR_OCCURRED(&generator_heap->exception_type, &generator_heap->exception_value, &generator_heap->exception_tb);
450 445
451 446
n 452             generator_heap->exception_lineno = 29; n 447             generator_heap->exception_lineno = 32;
453             generator_heap->type_description_1 = "c"; 448  
454             goto frame_exception_exit_1; 449             goto frame_exception_exit_1;
455         } 450         }
456         tmp_yield_result_1 = yield_return_value; 451         tmp_yield_result_1 = yield_return_value;
457     } 452     }
458 453
478             generator_heap->exception_tb = ADD_TRACEBACK(generator_heap->exception_tb, generator->m_frame, generator_heap->exception_lineno); 473             generator_heap->exception_tb = ADD_TRACEBACK(generator_heap->exception_tb, generator->m_frame, generator_heap->exception_lineno);
479         } 474         }
480 475
481         Nuitka_Frame_AttachLocals( 476         Nuitka_Frame_AttachLocals(
482             generator->m_frame, 477             generator->m_frame,
n 483             generator_heap->type_description_1, n 478             generator_heap->type_description_1
484             generator->m_closure[0]
485         ); 479         );
486 480
487 481
488         // Release cached frame if used for exception. 482         // Release cached frame if used for exception.
489         if (generator->m_frame == cache_m_frame) { 483         if (generator->m_frame == cache_m_frame) {
521 515
522     return NULL; 516     return NULL;
523 517
524 } 518 }
525 519
n 526 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty(struct Nuitka_CellObject **closure) { n 520 static PyObject *MAKE_GENERATOR___main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty() {
527     return Nuitka_Generator_New( 521     return Nuitka_Generator_New(
528         __main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty_context, 522         __main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty_context,
529         module___main__, 523         module___main__,
530         mod_consts[1], 524         mod_consts[1],
531 #if PYTHON_VERSION >= 0x350 525 #if PYTHON_VERSION >= 0x350
532         mod_consts[2], 526         mod_consts[2],
533 #endif 527 #endif
n 534         codeobj_0e73f7a67ddfe654dfb689d56a1de47e, n 528         codeobj_d20de09ba12226cd4fe439303866d72d,
535         closure, 529         NULL,
536         1, 530         0,
537         sizeof(struct __main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty_locals) 531         sizeof(struct __main__$$$function__1_calledRepeatedly$$$function__1_empty$$$genobj__1_empty_locals)
538     ); 532     );
539 } 533 }
540 534
541 535
542 536
543 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 537 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
544     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 538     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
545         impl___main__$$$function__1_calledRepeatedly, 539         impl___main__$$$function__1_calledRepeatedly,
n 546         mod_consts[9], n 540         mod_consts[8],
547 #if PYTHON_VERSION >= 0x300 541 #if PYTHON_VERSION >= 0x300
548         NULL, 542         NULL,
549 #endif 543 #endif
550         codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5, 544         codeobj_b0d6c1c98751bc63e87e0e94e96fa3e5,
551         NULL, 545         NULL,
563     return (PyObject *)result; 557     return (PyObject *)result;
564 } 558 }
565 559
566 560
567 561
n 568 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(struct Nuitka_CellObject **closure) { n 562 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty() {
569     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 563     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
570         impl___main__$$$function__1_calledRepeatedly$$$function__1_empty, 564         impl___main__$$$function__1_calledRepeatedly$$$function__1_empty,
571         mod_consts[1], 565         mod_consts[1],
572 #if PYTHON_VERSION >= 0x300 566 #if PYTHON_VERSION >= 0x300
573         mod_consts[2], 567         mod_consts[2],
574 #endif 568 #endif
n 575         codeobj_0e73f7a67ddfe654dfb689d56a1de47e, n 569         codeobj_d20de09ba12226cd4fe439303866d72d,
576         NULL, 570         NULL,
577 #if PYTHON_VERSION >= 0x300 571 #if PYTHON_VERSION >= 0x300
578         NULL, 572         NULL,
579         NULL, 573         NULL,
580 #endif 574 #endif
581         module___main__, 575         module___main__,
582         NULL, 576         NULL,
n 583         closure, n 577         NULL,
584         1 578         0
585     ); 579     );
586 580
587 581
588     return (PyObject *)result; 582     return (PyObject *)result;
589 } 583 }
947 941
948     // Module code. 942     // Module code.
949     { 943     {
950         PyObject *tmp_assign_source_1; 944         PyObject *tmp_assign_source_1;
951         tmp_assign_source_1 = Py_None; 945         tmp_assign_source_1 = Py_None;
n 952         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 946         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
953     } 947     }
954     { 948     {
955         PyObject *tmp_assign_source_2; 949         PyObject *tmp_assign_source_2;
n 956         tmp_assign_source_2 = mod_consts[5]; n 950         tmp_assign_source_2 = mod_consts[4];
957         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 951         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
958     } 952     }
959     { 953     {
960         PyObject *tmp_assign_source_3; 954         PyObject *tmp_assign_source_3;
961         tmp_assign_source_3 = Py_None; 955         tmp_assign_source_3 = Py_None;
n 962         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 956         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
963     } 957     }
964     { 958     {
965         PyObject *tmp_assign_source_4; 959         PyObject *tmp_assign_source_4;
966         tmp_assign_source_4 = PyDict_New(); 960         tmp_assign_source_4 = PyDict_New();
n 967         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 961         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
968     } 962     }
969     { 963     {
970         PyObject *tmp_assign_source_5; 964         PyObject *tmp_assign_source_5;
971         tmp_assign_source_5 = Py_None; 965         tmp_assign_source_5 = Py_None;
972         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 966         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
975         PyObject *tmp_assign_source_6; 969         PyObject *tmp_assign_source_6;
976 970
977 971
978         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 972         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
979 973
n 980         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_6); n 974         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_6);
981     } 975     }
982     { 976     {
983         PyObject *tmp_assign_source_7; 977         PyObject *tmp_assign_source_7;
984         PyObject *tmp_name_name_1; 978         PyObject *tmp_name_name_1;
985         PyObject *tmp_globals_arg_name_1; 979         PyObject *tmp_globals_arg_name_1;
986         PyObject *tmp_locals_arg_name_1; 980         PyObject *tmp_locals_arg_name_1;
987         PyObject *tmp_fromlist_name_1; 981         PyObject *tmp_fromlist_name_1;
988         PyObject *tmp_level_name_1; 982         PyObject *tmp_level_name_1;
n 989         tmp_name_name_1 = mod_consts[10]; n 983         tmp_name_name_1 = mod_consts[9];
990         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 984         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
991         tmp_locals_arg_name_1 = Py_None; 985         tmp_locals_arg_name_1 = Py_None;
992         tmp_fromlist_name_1 = Py_None; 986         tmp_fromlist_name_1 = Py_None;
n 993         tmp_level_name_1 = mod_consts[11]; n 987         tmp_level_name_1 = mod_consts[10];
994         tmp_assign_source_7 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1); 988         tmp_assign_source_7 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1);
995         assert(!(tmp_assign_source_7 == NULL)); 989         assert(!(tmp_assign_source_7 == NULL));
n 996         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_7); n 990         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_7);
997     } 991     }
998     // Frame without reuse. 992     // Frame without reuse.
999     frame_4f18bf361455e49230b1c1906473132f = MAKE_MODULE_FRAME(codeobj_4f18bf361455e49230b1c1906473132f, module___main__); 993     frame_4f18bf361455e49230b1c1906473132f = MAKE_MODULE_FRAME(codeobj_4f18bf361455e49230b1c1906473132f, module___main__);
1000 994
1001     // Push the new frame as the currently active one, and we should be exclusively 995     // Push the new frame as the currently active one, and we should be exclusively
1006     // Framed code: 1000     // Framed code:
1007     { 1001     {
1008         PyObject *tmp_assign_source_8; 1002         PyObject *tmp_assign_source_8;
1009         PyObject *tmp_iter_arg_1; 1003         PyObject *tmp_iter_arg_1;
1010         PyObject *tmp_called_instance_1; 1004         PyObject *tmp_called_instance_1;
n 1011         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]); n 1005         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
1012 1006
1013         if (unlikely(tmp_called_instance_1 == NULL)) { 1007         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1014             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[10]); n 1008             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[9]);
1015         } 1009         }
1016 1010
1017         assert(!(tmp_called_instance_1 == NULL)); 1011         assert(!(tmp_called_instance_1 == NULL));
1018         frame_4f18bf361455e49230b1c1906473132f->m_frame.f_lineno = 39; 1012         frame_4f18bf361455e49230b1c1906473132f->m_frame.f_lineno = 39;
1019         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1013         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1020             tmp_called_instance_1, 1014             tmp_called_instance_1,
n 1021             mod_consts[12], n 1015             mod_consts[11],
1022             &PyTuple_GET_ITEM(mod_consts[13], 0) 1016             &PyTuple_GET_ITEM(mod_consts[12], 0)
1023         ); 1017         );
1024 1018
1025         if (tmp_iter_arg_1 == NULL) { 1019         if (tmp_iter_arg_1 == NULL) {
1026             assert(ERROR_OCCURRED()); 1020             assert(ERROR_OCCURRED());
1027 1021
1077     } 1071     }
1078     { 1072     {
1079         PyObject *tmp_assign_source_10; 1073         PyObject *tmp_assign_source_10;
1080         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1074         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1081         tmp_assign_source_10 = tmp_for_loop_1__iter_value; 1075         tmp_assign_source_10 = tmp_for_loop_1__iter_value;
n 1082         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_10); n 1076         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_10);
1083     } 1077     }
1084     { 1078     {
1085         PyObject *tmp_called_name_1; 1079         PyObject *tmp_called_name_1;
1086         PyObject *tmp_call_result_1; 1080         PyObject *tmp_call_result_1;
1087         PyObject *tmp_args_element_name_1; 1081         PyObject *tmp_args_element_name_1;
n 1088         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]); n 1082         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
1089 1083
1090         if (unlikely(tmp_called_name_1 == NULL)) { 1084         if (unlikely(tmp_called_name_1 == NULL)) {
n 1091             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[9]); n 1085             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[8]);
1092         } 1086         }
1093 1087
1094         if (tmp_called_name_1 == NULL) { 1088         if (tmp_called_name_1 == NULL) {
1095             assert(ERROR_OCCURRED()); 1089             assert(ERROR_OCCURRED());
1096 1090
1099 1093
1100             exception_lineno = 40; 1094             exception_lineno = 40;
1101 1095
1102             goto try_except_handler_1; 1096             goto try_except_handler_1;
1103         } 1097         }
n 1104         tmp_args_element_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[3]); n 1098         tmp_args_element_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[13]);
1105 1099
1106         if (unlikely(tmp_args_element_name_1 == NULL)) { 1100         if (unlikely(tmp_args_element_name_1 == NULL)) {
t 1107             tmp_args_element_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[3]); t 1101             tmp_args_element_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[13]);
1108         } 1102         }
1109 1103
1110         assert(!(tmp_args_element_name_1 == NULL)); 1104         assert(!(tmp_args_element_name_1 == NULL));
1111         frame_4f18bf361455e49230b1c1906473132f->m_frame.f_lineno = 40; 1105         frame_4f18bf361455e49230b1c1906473132f->m_frame.f_lineno = 40;
1112         tmp_call_result_1 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_1, tmp_args_element_name_1); 1106         tmp_call_result_1 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_1, tmp_args_element_name_1);