Construct DictCreation

Performance Diagrams

Construct DictCreation 001000000010000000200000002000000030000000300000004000000040000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)4902645888.95192307692307257.0CPython 2.732049331242.31730769230768342.5723509185434Nuitka (master)32049331395.6826923076923342.5723509185434Nuitka (develop)32049331549.0480769230769342.5723509185434Nuitka (factory)Construct DictCreationTicks Construct DictCreation 001000000010000000200000002000000030000000300000004000000040000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)4943193188.95192307692307257.0CPython 3.835752201242.31730769230768325.3863986698115Nuitka (master)35751926395.6826923076923325.38777342352626Nuitka (develop)35751612549.0480769230769325.3893431423133Nuitka (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_b924e9f3c432cc8ea11d2300ee9625e9; 82 static PyCodeObject *codeobj_b924e9f3c432cc8ea11d2300ee9625e9;
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_fd8ae73eb7d44b784bbe8f68a3d43285 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[22], NULL, NULL, 0, 0, 0); 88     codeobj_fd8ae73eb7d44b784bbe8f68a3d43285 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[23], NULL, NULL, 0, 0, 0);
89     codeobj_b924e9f3c432cc8ea11d2300ee9625e9 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[14], mod_consts[23], NULL, 0, 0, 0); 89     codeobj_b924e9f3c432cc8ea11d2300ee9625e9 = 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_b924e9f3c432cc8ea11d2300ee9625e9; 112     struct Nuitka_FrameObject *frame_b924e9f3c432cc8ea11d2300ee9625e9;
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_b924e9f3c432cc8ea11d2300ee9625e9 = NULL; 118     static struct Nuitka_FrameObject *cache_frame_b924e9f3c432cc8ea11d2300ee9625e9 = 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_b924e9f3c432cc8ea11d2300ee9625e9); 332     RESTORE_FRAME_EXCEPTION(frame_b924e9f3c432cc8ea11d2300ee9625e9);
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_b924e9f3c432cc8ea11d2300ee9625e9 == cache_frame_b924e9f3c432cc8ea11d2300ee9625e9) { 369     if (frame_b924e9f3c432cc8ea11d2300ee9625e9 == cache_frame_b924e9f3c432cc8ea11d2300ee9625e9) {
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_b924e9f3c432cc8ea11d2300ee9625e9, 511         codeobj_b924e9f3c432cc8ea11d2300ee9625e9,
595         NULL, 512         NULL,
965 882
966     // Module code. 883     // Module code.
967     { 884     {
968         PyObject *tmp_assign_source_1; 885         PyObject *tmp_assign_source_1;
969         tmp_assign_source_1 = Py_None; 886         tmp_assign_source_1 = Py_None;
n 970         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 887         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1);
971     } 888     }
972     { 889     {
973         PyObject *tmp_assign_source_2; 890         PyObject *tmp_assign_source_2;
n 974         tmp_assign_source_2 = mod_consts[5]; n 891         tmp_assign_source_2 = mod_consts[6];
975         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 892         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2);
976     } 893     }
977     { 894     {
978         PyObject *tmp_assign_source_3; 895         PyObject *tmp_assign_source_3;
979         tmp_assign_source_3 = Py_None; 896         tmp_assign_source_3 = Py_None;
n 980         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 897         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3);
981     } 898     }
982     { 899     {
983         PyObject *tmp_assign_source_4; 900         PyObject *tmp_assign_source_4;
984         tmp_assign_source_4 = PyDict_New(); 901         tmp_assign_source_4 = PyDict_New();
n 985         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 902         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4);
986     } 903     }
987     { 904     {
988         PyObject *tmp_assign_source_5; 905         PyObject *tmp_assign_source_5;
n 989         tmp_assign_source_5 = mod_consts[9]; n 906         tmp_assign_source_5 = mod_consts[10];
990         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 907         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
991     } 908     }
992     { 909     {
993         PyObject *tmp_assign_source_6; 910         PyObject *tmp_assign_source_6;
n 994         tmp_assign_source_6 = mod_consts[9]; n 911         tmp_assign_source_6 = mod_consts[10];
995         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6); 912         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[1], tmp_assign_source_6);
996     } 913     }
997     { 914     {
998         PyObject *tmp_assign_source_7; 915         PyObject *tmp_assign_source_7;
n 999         tmp_assign_source_7 = mod_consts[9]; n 916         tmp_assign_source_7 = mod_consts[10];
1000         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_7); 917         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_7);
1001     } 918     }
1002     { 919     {
1003         PyObject *tmp_assign_source_8; 920         PyObject *tmp_assign_source_8;
n 1004         tmp_assign_source_8 = mod_consts[9]; n 921         tmp_assign_source_8 = mod_consts[10];
1005         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_8); 922         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_8);
1006     } 923     }
1007     { 924     {
1008         PyObject *tmp_assign_source_9; 925         PyObject *tmp_assign_source_9;
n 1009         tmp_assign_source_9 = mod_consts[9]; n 926         tmp_assign_source_9 = mod_consts[10];
1010         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_9); 927         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_9);
1011     } 928     }
1012     { 929     {
1013         PyObject *tmp_assign_source_10; 930         PyObject *tmp_assign_source_10;
n 1014         tmp_assign_source_10 = mod_consts[9]; n 931         tmp_assign_source_10 = mod_consts[10];
1015         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_10); 932         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_10);
1016     } 933     }
1017     { 934     {
1018         PyObject *tmp_assign_source_11; 935         PyObject *tmp_assign_source_11;
n 1019         tmp_assign_source_11 = mod_consts[9]; n 936         tmp_assign_source_11 = mod_consts[10];
1020         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_11); 937         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_11);
1021     } 938     }
1022     { 939     {
1023         PyObject *tmp_assign_source_12; 940         PyObject *tmp_assign_source_12;
n 1024         tmp_assign_source_12 = mod_consts[9]; n 941         tmp_assign_source_12 = mod_consts[10];
1025         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_12); 942         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_12);
1026     } 943     }
1027     { 944     {
1028         PyObject *tmp_assign_source_13; 945         PyObject *tmp_assign_source_13;
1029 946
1030 947
1031         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 948         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
1032 949
n 1033         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_13); n 950         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_13);
1034     } 951     }
1035     { 952     {
1036         PyObject *tmp_assign_source_14; 953         PyObject *tmp_assign_source_14;
1037         PyObject *tmp_name_name_1; 954         PyObject *tmp_name_name_1;
1038         PyObject *tmp_globals_arg_name_1; 955         PyObject *tmp_globals_arg_name_1;
1039         PyObject *tmp_locals_arg_name_1; 956         PyObject *tmp_locals_arg_name_1;
1040         PyObject *tmp_fromlist_name_1; 957         PyObject *tmp_fromlist_name_1;
1041         PyObject *tmp_level_name_1; 958         PyObject *tmp_level_name_1;
n 1042         tmp_name_name_1 = mod_consts[15]; n 959         tmp_name_name_1 = mod_consts[16];
1043         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 960         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1044         tmp_locals_arg_name_1 = Py_None; 961         tmp_locals_arg_name_1 = Py_None;
1045         tmp_fromlist_name_1 = Py_None; 962         tmp_fromlist_name_1 = Py_None;
n 1046         tmp_level_name_1 = mod_consts[16]; n 963         tmp_level_name_1 = mod_consts[17];
1047         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1); 964         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1);
1048         assert(!(tmp_assign_source_14 == NULL)); 965         assert(!(tmp_assign_source_14 == NULL));
n 1049         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[15], tmp_assign_source_14); n 966         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[16], tmp_assign_source_14);
1050     } 967     }
1051     // Frame without reuse. 968     // Frame without reuse.
1052     frame_fd8ae73eb7d44b784bbe8f68a3d43285 = MAKE_MODULE_FRAME(codeobj_fd8ae73eb7d44b784bbe8f68a3d43285, module___main__); 969     frame_fd8ae73eb7d44b784bbe8f68a3d43285 = MAKE_MODULE_FRAME(codeobj_fd8ae73eb7d44b784bbe8f68a3d43285, module___main__);
1053 970
1054     // Push the new frame as the currently active one, and we should be exclusively 971     // Push the new frame as the currently active one, and we should be exclusively
1059     // Framed code: 976     // Framed code:
1060     { 977     {
1061         PyObject *tmp_assign_source_15; 978         PyObject *tmp_assign_source_15;
1062         PyObject *tmp_iter_arg_1; 979         PyObject *tmp_iter_arg_1;
1063         PyObject *tmp_called_instance_1; 980         PyObject *tmp_called_instance_1;
n 1064         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[15]); n 981         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[16]);
1065 982
1066         if (unlikely(tmp_called_instance_1 == NULL)) { 983         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1067             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[15]); n 984             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[16]);
1068         } 985         }
1069 986
1070         assert(!(tmp_called_instance_1 == NULL)); 987         assert(!(tmp_called_instance_1 == NULL));
1071         frame_fd8ae73eb7d44b784bbe8f68a3d43285->m_frame.f_lineno = 50; 988         frame_fd8ae73eb7d44b784bbe8f68a3d43285->m_frame.f_lineno = 50;
1072         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 989         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1073             tmp_called_instance_1, 990             tmp_called_instance_1,
n 1074             mod_consts[17], n 991             mod_consts[18],
1075             &PyTuple_GET_ITEM(mod_consts[18], 0) 992             &PyTuple_GET_ITEM(mod_consts[19], 0)
1076         ); 993         );
1077 994
1078         if (tmp_iter_arg_1 == NULL) { 995         if (tmp_iter_arg_1 == NULL) {
1079             assert(ERROR_OCCURRED()); 996             assert(ERROR_OCCURRED());
1080 997
1130     } 1047     }
1131     { 1048     {
1132         PyObject *tmp_assign_source_17; 1049         PyObject *tmp_assign_source_17;
1133         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1050         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1134         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 1051         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 1135         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[19], tmp_assign_source_17); n 1052         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[20], tmp_assign_source_17);
1136     } 1053     }
1137     { 1054     {
1138         PyObject *tmp_called_name_1; 1055         PyObject *tmp_called_name_1;
1139         PyObject *tmp_call_result_1; 1056         PyObject *tmp_call_result_1;
n 1140         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[14]); n 1057         tmp_called_name_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[15]);
1141 1058
1142         if (unlikely(tmp_called_name_1 == NULL)) { 1059         if (unlikely(tmp_called_name_1 == NULL)) {
n 1143             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[14]); n 1060             tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[15]);
1144         } 1061         }
1145 1062
1146         if (tmp_called_name_1 == NULL) { 1063         if (tmp_called_name_1 == NULL) {
1147             assert(ERROR_OCCURRED()); 1064             assert(ERROR_OCCURRED());
1148 1065
1211     Py_DECREF(tmp_for_loop_1__for_iterator); 1128     Py_DECREF(tmp_for_loop_1__for_iterator);
1212     tmp_for_loop_1__for_iterator = NULL; 1129     tmp_for_loop_1__for_iterator = NULL;
1213     { 1130     {
1214         PyObject *tmp_called_name_2; 1131         PyObject *tmp_called_name_2;
1215         PyObject *tmp_call_result_2; 1132         PyObject *tmp_call_result_2;
n 1216         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[20]); n 1133         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[21]);
1217         assert(tmp_called_name_2 != NULL); 1134         assert(tmp_called_name_2 != NULL);
1218         frame_fd8ae73eb7d44b784bbe8f68a3d43285->m_frame.f_lineno = 53; 1135         frame_fd8ae73eb7d44b784bbe8f68a3d43285->m_frame.f_lineno = 53;
t 1219         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_2, mod_consts[21]); t 1136         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_2, mod_consts[22]);
1220 1137
1221         if (tmp_call_result_2 == NULL) { 1138         if (tmp_call_result_2 == NULL) {
1222             assert(ERROR_OCCURRED()); 1139             assert(ERROR_OCCURRED());
1223 1140
1224             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1141             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);