Construct DictCreation

Performance Diagrams

Construct DictCreation 001000000010000000200000002000000030000000300000004000000040000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)4902645888.95192307692307257.0CPython 2.732049331242.31730769230768342.5723509185434Nuitka (main)32049331395.6826923076923342.5723509185434Nuitka (develop)32049331549.0480769230769342.5723509185434Nuitka (factory)Construct DictCreationTicks Construct DictCreation 001000000010000000200000002000000030000000300000004000000040000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)4943193188.95192307692307257.0CPython 3.835749441242.31730769230768325.40019619800313Nuitka (main)35749441395.6826923076923325.40019619800313Nuitka (develop)35749441549.0480769230769325.40019619800313Nuitka (factory)Construct DictCreationTicks

Source Code with Construct

module_value1 = module_value2 = module_value3 = module_value4 = 1000
module_key1 = module_key2 = module_key3 = module_key4 = 1000

def calledRepeatedly():
    # Force frame and eliminate forward propagation (currently), and use local
    # variables to avoid impact of global variable access.
    dict_key1 = module_value1
    dict_key2 = module_value2
    dict_key3 = module_value3
    dict_key4 = module_value4

    dict_val1 = module_value1
    dict_val2 = module_value2
    dict_val3 = module_value3
    dict_val4 = module_value4

# construct_begin
    l = {
        dict_key1 : dict_val1,
        dict_key2 : dict_val2,
        dict_key3 : dict_val3,
        dict_key4 : dict_val4
    }
# construct_alternative



    return l, dict_val1, dict_val2, dict_val3, dict_val4, dict_key1, dict_key2, dict_key3, dict_key4

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

print("OK.")

Source Code without Construct

module_value1 = module_value2 = module_value3 = module_value4 = 1000
module_key1 = module_key2 = module_key3 = module_key4 = 1000

def calledRepeatedly():
    # Force frame and eliminate forward propagation (currently), and use local
    # variables to avoid impact of global variable access.
    dict_key1 = module_value1
    dict_key2 = module_value2
    dict_key3 = module_value3
    dict_key4 = module_value4

    dict_val1 = module_value1
    dict_val2 = module_value2
    dict_val3 = module_value3
    dict_val4 = module_value4

# construct_begin






# construct_alternative
    l = 1
# construct_end

    return l, dict_val1, dict_val2, dict_val3, dict_val4, dict_key1, dict_key2, dict_key3, dict_key4

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

print("OK.")

Context Diff of Source Code


Construct
Baseline
32     dict_val2 = module_value2 32     dict_val2 = module_value2
33     dict_val3 = module_value3 33     dict_val3 = module_value3
34     dict_val4 = module_value4 34     dict_val4 = module_value4
35 35
36 # construct_begin 36 # construct_begin
n 37     l = { n
38         dict_key1 : dict_val1,
39         dict_key2 : dict_val2,
40         dict_key3 : dict_val3,
41         dict_key4 : dict_val4
42     }
43 # construct_alternative
44 37
45 38
t t 39  
40  
41  
42  
43 # construct_alternative
44     l = 1
45 # construct_end
46 46
47     return l, dict_val1, dict_val2, dict_val3, dict_val4, dict_key1, dict_key2, dict_key3, dict_key4 47     return l, dict_val1, dict_val2, dict_val3, dict_val4, dict_key1, dict_key2, dict_key3, dict_key4
48 48
49 import itertools 49 import itertools
50 for x in itertools.repeat(None, 50000): 50 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[24]; n 36 static PyObject *mod_consts[25];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[24]; n 38 static Py_hash_t mod_consts_hash[25];
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 < 24; i++) { n 53         for(int i = 0; i < 25; 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 < 24; i++) { n 73     for(int i = 0; i < 25; 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_187cfa0fb3e2bb396388ff8f768b956a; 82 static PyCodeObject *codeobj_187cfa0fb3e2bb396388ff8f768b956a;
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[5]; CHECK_OBJECT(module_filename_obj); n 87     module_filename_obj = mod_consts[6]; CHECK_OBJECT(module_filename_obj);
88     codeobj_5b55e7240ff428d1f4952fd0d2b8ccd7 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[22], NULL, NULL, 0, 0, 0); 88     codeobj_5b55e7240ff428d1f4952fd0d2b8ccd7 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[23], NULL, NULL, 0, 0, 0);
89     codeobj_187cfa0fb3e2bb396388ff8f768b956a = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[14], mod_consts[23], NULL, 0, 0, 0); 89     codeobj_187cfa0fb3e2bb396388ff8f768b956a = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[15], mod_consts[24], 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
107     PyObject *var_dict_key4 = NULL; 107     PyObject *var_dict_key4 = NULL;
108     PyObject *var_dict_val1 = NULL; 108     PyObject *var_dict_val1 = NULL;
109     PyObject *var_dict_val2 = NULL; 109     PyObject *var_dict_val2 = NULL;
110     PyObject *var_dict_val3 = NULL; 110     PyObject *var_dict_val3 = NULL;
111     PyObject *var_dict_val4 = NULL; 111     PyObject *var_dict_val4 = NULL;
n 112     PyObject *var_l = NULL; n
113     struct Nuitka_FrameObject *frame_187cfa0fb3e2bb396388ff8f768b956a; 112     struct Nuitka_FrameObject *frame_187cfa0fb3e2bb396388ff8f768b956a;
114     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 113     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
115     PyObject *exception_type = NULL; 114     PyObject *exception_type = NULL;
116     PyObject *exception_value = NULL; 115     PyObject *exception_value = NULL;
117     PyTracebackObject *exception_tb = NULL; 116     PyTracebackObject *exception_tb = NULL;
118     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 117     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 119     int tmp_res; n
120     static struct Nuitka_FrameObject *cache_frame_187cfa0fb3e2bb396388ff8f768b956a = NULL; 118     static struct Nuitka_FrameObject *cache_frame_187cfa0fb3e2bb396388ff8f768b956a = NULL;
121     PyObject *tmp_return_value = NULL; 119     PyObject *tmp_return_value = NULL;
122     PyObject *exception_keeper_type_1; 120     PyObject *exception_keeper_type_1;
123     PyObject *exception_keeper_value_1; 121     PyObject *exception_keeper_value_1;
124     PyTracebackObject *exception_keeper_tb_1; 122     PyTracebackObject *exception_keeper_tb_1;
166 164
167             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 165             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
168 166
169 167
170             exception_lineno = 26; 168             exception_lineno = 26;
n 171             type_description_1 = "ooooooooo"; n 169             type_description_1 = "ooooooooN";
172             goto frame_exception_exit_1; 170             goto frame_exception_exit_1;
173         } 171         }
174         assert(var_dict_key1 == NULL); 172         assert(var_dict_key1 == NULL);
175         Py_INCREF(tmp_assign_source_1); 173         Py_INCREF(tmp_assign_source_1);
176         var_dict_key1 = tmp_assign_source_1; 174         var_dict_key1 = tmp_assign_source_1;
188 186
189             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 187             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
190 188
191 189
192             exception_lineno = 27; 190             exception_lineno = 27;
n 193             type_description_1 = "ooooooooo"; n 191             type_description_1 = "ooooooooN";
194             goto frame_exception_exit_1; 192             goto frame_exception_exit_1;
195         } 193         }
196         assert(var_dict_key2 == NULL); 194         assert(var_dict_key2 == NULL);
197         Py_INCREF(tmp_assign_source_2); 195         Py_INCREF(tmp_assign_source_2);
198         var_dict_key2 = tmp_assign_source_2; 196         var_dict_key2 = tmp_assign_source_2;
210 208
211             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 209             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
212 210
213 211
214             exception_lineno = 28; 212             exception_lineno = 28;
n 215             type_description_1 = "ooooooooo"; n 213             type_description_1 = "ooooooooN";
216             goto frame_exception_exit_1; 214             goto frame_exception_exit_1;
217         } 215         }
218         assert(var_dict_key3 == NULL); 216         assert(var_dict_key3 == NULL);
219         Py_INCREF(tmp_assign_source_3); 217         Py_INCREF(tmp_assign_source_3);
220         var_dict_key3 = tmp_assign_source_3; 218         var_dict_key3 = tmp_assign_source_3;
232 230
233             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 231             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
234 232
235 233
236             exception_lineno = 29; 234             exception_lineno = 29;
n 237             type_description_1 = "ooooooooo"; n 235             type_description_1 = "ooooooooN";
238             goto frame_exception_exit_1; 236             goto frame_exception_exit_1;
239         } 237         }
240         assert(var_dict_key4 == NULL); 238         assert(var_dict_key4 == NULL);
241         Py_INCREF(tmp_assign_source_4); 239         Py_INCREF(tmp_assign_source_4);
242         var_dict_key4 = tmp_assign_source_4; 240         var_dict_key4 = tmp_assign_source_4;
254 252
255             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 253             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
256 254
257 255
258             exception_lineno = 31; 256             exception_lineno = 31;
n 259             type_description_1 = "ooooooooo"; n 257             type_description_1 = "ooooooooN";
260             goto frame_exception_exit_1; 258             goto frame_exception_exit_1;
261         } 259         }
262         assert(var_dict_val1 == NULL); 260         assert(var_dict_val1 == NULL);
263         Py_INCREF(tmp_assign_source_5); 261         Py_INCREF(tmp_assign_source_5);
264         var_dict_val1 = tmp_assign_source_5; 262         var_dict_val1 = tmp_assign_source_5;
276 274
277             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 275             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
278 276
279 277
280             exception_lineno = 32; 278             exception_lineno = 32;
n 281             type_description_1 = "ooooooooo"; n 279             type_description_1 = "ooooooooN";
282             goto frame_exception_exit_1; 280             goto frame_exception_exit_1;
283         } 281         }
284         assert(var_dict_val2 == NULL); 282         assert(var_dict_val2 == NULL);
285         Py_INCREF(tmp_assign_source_6); 283         Py_INCREF(tmp_assign_source_6);
286         var_dict_val2 = tmp_assign_source_6; 284         var_dict_val2 = tmp_assign_source_6;
298 296
299             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 297             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
300 298
301 299
302             exception_lineno = 33; 300             exception_lineno = 33;
n 303             type_description_1 = "ooooooooo"; n 301             type_description_1 = "ooooooooN";
304             goto frame_exception_exit_1; 302             goto frame_exception_exit_1;
305         } 303         }
306         assert(var_dict_val3 == NULL); 304         assert(var_dict_val3 == NULL);
307         Py_INCREF(tmp_assign_source_7); 305         Py_INCREF(tmp_assign_source_7);
308         var_dict_val3 = tmp_assign_source_7; 306         var_dict_val3 = tmp_assign_source_7;
320 318
321             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 319             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
322 320
323 321
324             exception_lineno = 34; 322             exception_lineno = 34;
n 325             type_description_1 = "ooooooooo"; n 323             type_description_1 = "ooooooooN";
326             goto frame_exception_exit_1; 324             goto frame_exception_exit_1;
327         } 325         }
328         assert(var_dict_val4 == NULL); 326         assert(var_dict_val4 == NULL);
329         Py_INCREF(tmp_assign_source_8); 327         Py_INCREF(tmp_assign_source_8);
330         var_dict_val4 = tmp_assign_source_8; 328         var_dict_val4 = tmp_assign_source_8;
n 331     } n
332     {
333         PyObject *tmp_assign_source_9;
334         PyObject *tmp_dict_key_1;
335         PyObject *tmp_dict_value_1;
336         CHECK_OBJECT(var_dict_key1);
337         tmp_dict_key_1 = var_dict_key1;
338         CHECK_OBJECT(var_dict_val1);
339         tmp_dict_value_1 = var_dict_val1;
340         tmp_assign_source_9 = _PyDict_NewPresized( 4 );
341         tmp_res = PyDict_SetItem(tmp_assign_source_9, tmp_dict_key_1, tmp_dict_value_1);
342         if (tmp_res != 0) {
343             assert(ERROR_OCCURRED());
344  
345             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
346  
347  
348             exception_lineno = 38;
349             type_description_1 = "ooooooooo";
350             goto dict_build_exception_1;
351         }
352         CHECK_OBJECT(var_dict_key2);
353         tmp_dict_key_1 = var_dict_key2;
354         CHECK_OBJECT(var_dict_val2);
355         tmp_dict_value_1 = var_dict_val2;
356         tmp_res = PyDict_SetItem(tmp_assign_source_9, tmp_dict_key_1, tmp_dict_value_1);
357         if (tmp_res != 0) {
358             assert(ERROR_OCCURRED());
359  
360             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
361  
362  
363             exception_lineno = 39;
364             type_description_1 = "ooooooooo";
365             goto dict_build_exception_1;
366         }
367         CHECK_OBJECT(var_dict_key3);
368         tmp_dict_key_1 = var_dict_key3;
369         CHECK_OBJECT(var_dict_val3);
370         tmp_dict_value_1 = var_dict_val3;
371         tmp_res = PyDict_SetItem(tmp_assign_source_9, tmp_dict_key_1, tmp_dict_value_1);
372         if (tmp_res != 0) {
373             assert(ERROR_OCCURRED());
374  
375             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
376  
377  
378             exception_lineno = 40;
379             type_description_1 = "ooooooooo";
380             goto dict_build_exception_1;
381         }
382         CHECK_OBJECT(var_dict_key4);
383         tmp_dict_key_1 = var_dict_key4;
384         CHECK_OBJECT(var_dict_val4);
385         tmp_dict_value_1 = var_dict_val4;
386         tmp_res = PyDict_SetItem(tmp_assign_source_9, tmp_dict_key_1, tmp_dict_value_1);
387         if (tmp_res != 0) {
388             assert(ERROR_OCCURRED());
389  
390             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
391  
392  
393             exception_lineno = 41;
394             type_description_1 = "ooooooooo";
395             goto dict_build_exception_1;
396         }
397         goto dict_build_noexception_1;
398         // Exception handling pass through code for dict_build:
399         dict_build_exception_1:;
400         Py_DECREF(tmp_assign_source_9);
401         goto frame_exception_exit_1;
402         // Finished with no exception for dict_build:
403         dict_build_noexception_1:;
404         assert(var_l == NULL);
405         var_l = tmp_assign_source_9;
406     } 329     }
407 330
408 #if 0 331 #if 0
409     RESTORE_FRAME_EXCEPTION(frame_187cfa0fb3e2bb396388ff8f768b956a); 332     RESTORE_FRAME_EXCEPTION(frame_187cfa0fb3e2bb396388ff8f768b956a);
410 #endif 333 #endif
436         var_dict_key4, 359         var_dict_key4,
437         var_dict_val1, 360         var_dict_val1,
438         var_dict_val2, 361         var_dict_val2,
439         var_dict_val3, 362         var_dict_val3,
440         var_dict_val4, 363         var_dict_val4,
n 441         var_l n 364         NULL
442     ); 365     );
443 366
444 367
445     // Release cached frame if used for exception. 368     // Release cached frame if used for exception.
446     if (frame_187cfa0fb3e2bb396388ff8f768b956a == cache_frame_187cfa0fb3e2bb396388ff8f768b956a) { 369     if (frame_187cfa0fb3e2bb396388ff8f768b956a == cache_frame_187cfa0fb3e2bb396388ff8f768b956a) {
462     goto try_except_handler_1; 385     goto try_except_handler_1;
463 386
464     frame_no_exception_1:; 387     frame_no_exception_1:;
465     { 388     {
466         PyObject *tmp_tuple_element_1; 389         PyObject *tmp_tuple_element_1;
n 467         CHECK_OBJECT(var_l); n
468         tmp_tuple_element_1 = var_l; 390         tmp_tuple_element_1 = mod_consts[4];
469         tmp_return_value = PyTuple_New(9); 391         tmp_return_value = PyTuple_New(9);
470         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1); 392         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1);
471         CHECK_OBJECT(var_dict_val1); 393         CHECK_OBJECT(var_dict_val1);
472         tmp_tuple_element_1 = var_dict_val1; 394         tmp_tuple_element_1 = var_dict_val1;
473         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1); 395         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1);
520     Py_DECREF(var_dict_val3); 442     Py_DECREF(var_dict_val3);
521     var_dict_val3 = NULL; 443     var_dict_val3 = NULL;
522     CHECK_OBJECT(var_dict_val4); 444     CHECK_OBJECT(var_dict_val4);
523     Py_DECREF(var_dict_val4); 445     Py_DECREF(var_dict_val4);
524     var_dict_val4 = NULL; 446     var_dict_val4 = NULL;
n 525     CHECK_OBJECT(var_l); n
526     Py_DECREF(var_l);
527     var_l = NULL;
528     goto function_return_exit; 447     goto function_return_exit;
529     // Exception handler code: 448     // Exception handler code:
530     try_except_handler_1:; 449     try_except_handler_1:;
531     exception_keeper_type_1 = exception_type; 450     exception_keeper_type_1 = exception_type;
532     exception_keeper_value_1 = exception_value; 451     exception_keeper_value_1 = exception_value;
549     var_dict_val1 = NULL; 468     var_dict_val1 = NULL;
550     Py_XDECREF(var_dict_val2); 469     Py_XDECREF(var_dict_val2);
551     var_dict_val2 = NULL; 470     var_dict_val2 = NULL;
552     Py_XDECREF(var_dict_val3); 471     Py_XDECREF(var_dict_val3);
553     var_dict_val3 = NULL; 472     var_dict_val3 = NULL;
n 554     Py_XDECREF(var_dict_val4); n
555     var_dict_val4 = NULL;
556     // Re-raise. 473     // Re-raise.
557     exception_type = exception_keeper_type_1; 474     exception_type = exception_keeper_type_1;
558     exception_value = exception_keeper_value_1; 475     exception_value = exception_keeper_value_1;
559     exception_tb = exception_keeper_tb_1; 476     exception_tb = exception_keeper_tb_1;
560     exception_lineno = exception_keeper_lineno_1; 477     exception_lineno = exception_keeper_lineno_1;
585 502
586 503
587 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 504 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
588     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 505     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
589         impl___main__$$$function__1_calledRepeatedly, 506         impl___main__$$$function__1_calledRepeatedly,
n 590         mod_consts[14], n 507         mod_consts[15],
591 #if PYTHON_VERSION >= 0x300 508 #if PYTHON_VERSION >= 0x300
592         NULL, 509         NULL,
593 #endif 510 #endif
594         codeobj_187cfa0fb3e2bb396388ff8f768b956a, 511         codeobj_187cfa0fb3e2bb396388ff8f768b956a,
595         NULL, 512         NULL,
970 887
971     // Module code. 888     // Module code.
972     { 889     {
973         PyObject *tmp_assign_source_1; 890         PyObject *tmp_assign_source_1;
974         tmp_assign_source_1 = Py_None; 891         tmp_assign_source_1 = Py_None;
n 975         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 892         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1);
976     } 893     }
977     { 894     {
978         PyObject *tmp_assign_source_2; 895         PyObject *tmp_assign_source_2;
n 979         tmp_assign_source_2 = mod_consts[5]; n 896         tmp_assign_source_2 = mod_consts[6];
980         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 897         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2);
981     } 898     }
982     { 899     {
983         PyObject *tmp_assign_source_3; 900         PyObject *tmp_assign_source_3;
984         tmp_assign_source_3 = Py_None; 901         tmp_assign_source_3 = Py_None;
n 985         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 902         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3);
986     } 903     }
987     { 904     {
988         PyObject *tmp_assign_source_4; 905         PyObject *tmp_assign_source_4;
989         tmp_assign_source_4 = PyDict_New(); 906         tmp_assign_source_4 = PyDict_New();
n 990         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 907         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4);
991     } 908     }
992     { 909     {
993         PyObject *tmp_assign_source_5; 910         PyObject *tmp_assign_source_5;
n 994         tmp_assign_source_5 = mod_consts[9]; n 911         tmp_assign_source_5 = mod_consts[10];
995         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 912         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
996     } 913     }
997     { 914     {
998         PyObject *tmp_assign_source_6; 915         PyObject *tmp_assign_source_6;
n 999         tmp_assign_source_6 = mod_consts[9]; n 916         tmp_assign_source_6 = mod_consts[10];
1000         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6); 917         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6);
1001     } 918     }
1002     { 919     {
1003         PyObject *tmp_assign_source_7; 920         PyObject *tmp_assign_source_7;
n 1004         tmp_assign_source_7 = mod_consts[9]; n 921         tmp_assign_source_7 = mod_consts[10];
1005         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_7); 922         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_7);
1006     } 923     }
1007     { 924     {
1008         PyObject *tmp_assign_source_8; 925         PyObject *tmp_assign_source_8;
n 1009         tmp_assign_source_8 = mod_consts[9]; n 926         tmp_assign_source_8 = mod_consts[10];
1010         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_8); 927         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_8);
1011     } 928     }
1012     { 929     {
1013         PyObject *tmp_assign_source_9; 930         PyObject *tmp_assign_source_9;
n 1014         tmp_assign_source_9 = mod_consts[9]; n 931         tmp_assign_source_9 = mod_consts[10];
1015         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_9); 932         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_9);
1016     } 933     }
1017     { 934     {
1018         PyObject *tmp_assign_source_10; 935         PyObject *tmp_assign_source_10;
n 1019         tmp_assign_source_10 = mod_consts[9]; n 936         tmp_assign_source_10 = mod_consts[10];
1020         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_10); 937         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_10);
1021     } 938     }
1022     { 939     {
1023         PyObject *tmp_assign_source_11; 940         PyObject *tmp_assign_source_11;
n 1024         tmp_assign_source_11 = mod_consts[9]; n 941         tmp_assign_source_11 = mod_consts[10];
1025         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_11); 942         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_11);
1026     } 943     }
1027     { 944     {
1028         PyObject *tmp_assign_source_12; 945         PyObject *tmp_assign_source_12;
n 1029         tmp_assign_source_12 = mod_consts[9]; n 946         tmp_assign_source_12 = mod_consts[10];
1030         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_12); 947         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_12);
1031     } 948     }
1032     { 949     {
1033         PyObject *tmp_assign_source_13; 950         PyObject *tmp_assign_source_13;
1034 951
1035 952
1036         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 953         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
1037 954
n 1038         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_13); n 955         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_13);
1039     } 956     }
1040     { 957     {
1041         PyObject *tmp_assign_source_14; 958         PyObject *tmp_assign_source_14;
1042         PyObject *tmp_name_value_1; 959         PyObject *tmp_name_value_1;
1043         PyObject *tmp_globals_arg_value_1; 960         PyObject *tmp_globals_arg_value_1;
1044         PyObject *tmp_locals_arg_value_1; 961         PyObject *tmp_locals_arg_value_1;
1045         PyObject *tmp_fromlist_value_1; 962         PyObject *tmp_fromlist_value_1;
1046         PyObject *tmp_level_value_1; 963         PyObject *tmp_level_value_1;
n 1047         tmp_name_value_1 = mod_consts[15]; n 964         tmp_name_value_1 = mod_consts[16];
1048         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 965         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1049         tmp_locals_arg_value_1 = Py_None; 966         tmp_locals_arg_value_1 = Py_None;
1050         tmp_fromlist_value_1 = Py_None; 967         tmp_fromlist_value_1 = Py_None;
n 1051         tmp_level_value_1 = mod_consts[16]; n 968         tmp_level_value_1 = mod_consts[17];
1052         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 969         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
1053         assert(!(tmp_assign_source_14 == NULL)); 970         assert(!(tmp_assign_source_14 == NULL));
n 1054         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_14); n 971         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[16], tmp_assign_source_14);
1055     } 972     }
1056     // Frame without reuse. 973     // Frame without reuse.
1057     frame_5b55e7240ff428d1f4952fd0d2b8ccd7 = MAKE_MODULE_FRAME(codeobj_5b55e7240ff428d1f4952fd0d2b8ccd7, module___main__); 974     frame_5b55e7240ff428d1f4952fd0d2b8ccd7 = MAKE_MODULE_FRAME(codeobj_5b55e7240ff428d1f4952fd0d2b8ccd7, module___main__);
1058 975
1059     // Push the new frame as the currently active one, and we should be exclusively 976     // Push the new frame as the currently active one, and we should be exclusively
1064     // Framed code: 981     // Framed code:
1065     { 982     {
1066         PyObject *tmp_assign_source_15; 983         PyObject *tmp_assign_source_15;
1067         PyObject *tmp_iter_arg_1; 984         PyObject *tmp_iter_arg_1;
1068         PyObject *tmp_called_instance_1; 985         PyObject *tmp_called_instance_1;
n 1069         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[15]); n 986         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[16]);
1070 987
1071         if (unlikely(tmp_called_instance_1 == NULL)) { 988         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1072             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[15]); n 989             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[16]);
1073         } 990         }
1074 991
1075         assert(!(tmp_called_instance_1 == NULL)); 992         assert(!(tmp_called_instance_1 == NULL));
1076         frame_5b55e7240ff428d1f4952fd0d2b8ccd7->m_frame.f_lineno = 50; 993         frame_5b55e7240ff428d1f4952fd0d2b8ccd7->m_frame.f_lineno = 50;
1077         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 994         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1078             tmp_called_instance_1, 995             tmp_called_instance_1,
n 1079             mod_consts[17], n 996             mod_consts[18],
1080             &PyTuple_GET_ITEM(mod_consts[18], 0) 997             &PyTuple_GET_ITEM(mod_consts[19], 0)
1081         ); 998         );
1082 999
1083         if (tmp_iter_arg_1 == NULL) { 1000         if (tmp_iter_arg_1 == NULL) {
1084             assert(ERROR_OCCURRED()); 1001             assert(ERROR_OCCURRED());
1085 1002
1135     } 1052     }
1136     { 1053     {
1137         PyObject *tmp_assign_source_17; 1054         PyObject *tmp_assign_source_17;
1138         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1055         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1139         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 1056         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 1140         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[19], tmp_assign_source_17); n 1057         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[20], tmp_assign_source_17);
1141     } 1058     }
1142     { 1059     {
1143         PyObject *tmp_called_value_1; 1060         PyObject *tmp_called_value_1;
1144         PyObject *tmp_call_result_1; 1061         PyObject *tmp_call_result_1;
n 1145         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[14]); n 1062         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[15]);
1146 1063
1147         if (unlikely(tmp_called_value_1 == NULL)) { 1064         if (unlikely(tmp_called_value_1 == NULL)) {
n 1148             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[14]); n 1065             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[15]);
1149         } 1066         }
1150 1067
1151         if (tmp_called_value_1 == NULL) { 1068         if (tmp_called_value_1 == NULL) {
1152             assert(ERROR_OCCURRED()); 1069             assert(ERROR_OCCURRED());
1153 1070
1216     Py_DECREF(tmp_for_loop_1__for_iterator); 1133     Py_DECREF(tmp_for_loop_1__for_iterator);
1217     tmp_for_loop_1__for_iterator = NULL; 1134     tmp_for_loop_1__for_iterator = NULL;
1218     { 1135     {
1219         PyObject *tmp_called_value_2; 1136         PyObject *tmp_called_value_2;
1220         PyObject *tmp_call_result_2; 1137         PyObject *tmp_call_result_2;
n 1221         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[20]); n 1138         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[21]);
1222         assert(tmp_called_value_2 != NULL); 1139         assert(tmp_called_value_2 != NULL);
1223         frame_5b55e7240ff428d1f4952fd0d2b8ccd7->m_frame.f_lineno = 53; 1140         frame_5b55e7240ff428d1f4952fd0d2b8ccd7->m_frame.f_lineno = 53;
t 1224         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_2, mod_consts[21]); t 1141         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_2, mod_consts[22]);
1225 1142
1226         if (tmp_call_result_2 == NULL) { 1143         if (tmp_call_result_2 == NULL) {
1227             assert(ERROR_OCCURRED()); 1144             assert(ERROR_OCCURRED());
1228 1145
1229             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1146             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);