Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)18398611988.11538461538461257.0CPython 2.748602730240.03846153846155438.83609951177476Nuitka (master)48602725391.96153846153845438.83610622737336Nuitka (develop)48607425543.8846153846154438.82979356468985Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)18651244588.11538461538461257.0CPython 3.552605024240.03846153846155434.41756504918067Nuitka (master)52605510391.96153846153845434.4169211346316Nuitka (develop)52615635543.8846153846154434.40350624819206Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks

Source Code with Construct

from __future__ import print_function

def compiled_func(a,b,c,d,e,f):
    return a, b, c, d, e, f

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    compiled_func("some", "random", "values", "to", "check", "call")
    compiled_func("some", "other", "values", "to", "check", "call")
    compiled_func("some", "new", "values", "to", "check", "call")
# construct_alternative



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

print("OK.")

Source Code without Construct

from __future__ import print_function

def compiled_func(a,b,c,d,e,f):
    return a, b, c, d, e, f

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin



# construct_alternative
    pass
# construct_end

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

print("OK.")

Context Diff of Source Code


Construct
Baseline
24 24
25 def calledRepeatedly(): 25 def calledRepeatedly():
26     # This is supposed to make a call to a non-compiled function, which is 26     # This is supposed to make a call to a non-compiled function, which is
27     # being optimized separately. 27     # being optimized separately.
28 # construct_begin 28 # construct_begin
n 29     compiled_func("some", "random", "values", "to", "check", "call") n
30     compiled_func("some", "other", "values", "to", "check", "call")
31     compiled_func("some", "new", "values", "to", "check", "call")
32 # construct_alternative
33 29
34 30
t t 31  
32 # construct_alternative
33     pass
34 # construct_end
35 35
36 import itertools 36 import itertools
37 for x in itertools.repeat(None, 50000): 37 for x in itertools.repeat(None, 50000):
38     calledRepeatedly() 38     calledRepeatedly()
39 39

Context Diff of Generated Code


Construct
Baseline
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *mod_consts[20]; n 36 static PyObject *mod_consts[17];
37 37
38 static PyObject *module_filename_obj = NULL; 38 static PyObject *module_filename_obj = NULL;
39 39
40 /* Indicator if this modules private constants were created yet. */ 40 /* Indicator if this modules private constants were created yet. */
41 static bool constants_created = false; 41 static bool constants_created = false;
42 42
43 /* Function to create module private constants. */ 43 /* Function to create module private constants. */
44 static void createModuleConstants(void) { 44 static void createModuleConstants(void) {
n 45     loadConstantsBlob(&mod_consts[0], "__main__", 20); n 45     loadConstantsBlob(&mod_consts[0], "__main__", 17);
46 46
47     constants_created = true; 47     constants_created = true;
48 } 48 }
49 49
50 /* Function to verify module private constants for non-corruption. */ 50 /* Function to verify module private constants for non-corruption. */
51 #ifndef __NUITKA_NO_ASSERT__ 51 #ifndef __NUITKA_NO_ASSERT__
52 void checkModuleConstants___main__(void) { 52 void checkModuleConstants___main__(void) {
53     // The module may not have been used at all, then ignore this. 53     // The module may not have been used at all, then ignore this.
54     if (constants_created == false) return; 54     if (constants_created == false) return;
55 55
n 56     checkConstantsBlob(&mod_consts[0], "__main__", 20); n 56     checkConstantsBlob(&mod_consts[0], "__main__", 17);
57 } 57 }
58 #endif 58 #endif
59 59
60 // The module code objects. 60 // The module code objects.
61 static PyCodeObject *codeobj_3a868dae346949dcead8f40c999d8c2e; 61 static PyCodeObject *codeobj_3a868dae346949dcead8f40c999d8c2e;
n 62 static PyCodeObject *codeobj_70ce1f2b50fd7a7a6fb13df12da296e2; n 62 static PyCodeObject *codeobj_4030bf1979ca3381c9a2c011baeed53c;
63 static PyCodeObject *codeobj_e16597bc74c47defd42ef826e13870f7; 63 static PyCodeObject *codeobj_e16597bc74c47defd42ef826e13870f7;
64 /* For use in "MainProgram.c". */ 64 /* For use in "MainProgram.c". */
65 PyCodeObject *codeobj_main = NULL; 65 PyCodeObject *codeobj_main = NULL;
66 66
67 static void createModuleCodeObjects(void) { 67 static void createModuleCodeObjects(void) {
n 68     module_filename_obj = mod_consts[5]; CHECK_OBJECT(module_filename_obj); n 68     module_filename_obj = mod_consts[1]; CHECK_OBJECT(module_filename_obj);
69     codeobj_3a868dae346949dcead8f40c999d8c2e = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[17], mod_consts[18], 0, 0, 0); 69     codeobj_3a868dae346949dcead8f40c999d8c2e = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[15], 0, 0, 0);
70     codeobj_70ce1f2b50fd7a7a6fb13df12da296e2 = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[10], mod_consts[18], 0, 0, 0); 70     codeobj_4030bf1979ca3381c9a2c011baeed53c = MAKE_CODEOBJECT(module_filename_obj, 25, CO_NOFREE, mod_consts[7], mod_consts[15], 0, 0, 0);
71     codeobj_e16597bc74c47defd42ef826e13870f7 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[0], mod_consts[19], 6, 0, 0); 71     codeobj_e16597bc74c47defd42ef826e13870f7 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[6], mod_consts[16], 6, 0, 0);
72 } 72 }
73 73
74 // The module function declarations. 74 // The module function declarations.
75 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(); 75 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func();
76 76
150    assert(had_error || !ERROR_OCCURRED()); 150    assert(had_error || !ERROR_OCCURRED());
151    return tmp_return_value; 151    return tmp_return_value;
152 } 152 }
153 153
154 154
n 155 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
156     // Preserve error status for checks
157 #ifndef __NUITKA_NO_ASSERT__
158     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
159 #endif
160  
161     // Local variable declarations.
162     struct Nuitka_FrameObject *frame_70ce1f2b50fd7a7a6fb13df12da296e2;
163     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
164     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
165     PyObject *exception_type = NULL;
166     PyObject *exception_value = NULL;
167     PyTracebackObject *exception_tb = NULL;
168     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
169     static struct Nuitka_FrameObject *cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2 = NULL;
170     PyObject *tmp_return_value = NULL;
171  
172     // Actual function body.
173     if (isFrameUnusable(cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2)) {
174         Py_XDECREF(cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2);
175  
176 #if _DEBUG_REFCOUNTS
177         if (cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2 == NULL) {
178             count_active_frame_cache_instances += 1;
179         } else {
180             count_released_frame_cache_instances += 1;
181         }
182         count_allocated_frame_cache_instances += 1;
183 #endif
184         cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2 = MAKE_FUNCTION_FRAME(codeobj_70ce1f2b50fd7a7a6fb13df12da296e2, module___main__, 0);
185 #if _DEBUG_REFCOUNTS
186     } else {
187         count_hit_frame_cache_instances += 1;
188 #endif
189     }
190     assert(cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2->m_type_description == NULL);
191     frame_70ce1f2b50fd7a7a6fb13df12da296e2 = cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2;
192  
193     // Push the new frame as the currently active one.
194     pushFrameStack(frame_70ce1f2b50fd7a7a6fb13df12da296e2);
195  
196     // Mark the frame object as in use, ref count 1 will be up for reuse.
197     assert(Py_REFCNT(frame_70ce1f2b50fd7a7a6fb13df12da296e2) == 2); // Frame stack
198  
199     // Framed code:
200     {
201         PyObject *tmp_called_name_1;
202         PyObject *tmp_mvar_value_1;
203         PyObject *tmp_call_result_1;
204         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
205  
206         if (unlikely(tmp_mvar_value_1 == NULL)) {
207             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
208         }
209  
210         if (unlikely(tmp_mvar_value_1 == NULL)) {
211  
212             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
213             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
214             CHAIN_EXCEPTION(exception_value);
215  
216             exception_lineno = 29;
217  
218             goto frame_exception_exit_1;
219         }
220  
221         tmp_called_name_1 = tmp_mvar_value_1;
222         frame_70ce1f2b50fd7a7a6fb13df12da296e2->m_frame.f_lineno = 29;
223         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(mod_consts[1], 0));
224  
225         if (tmp_call_result_1 == NULL) {
226             assert(ERROR_OCCURRED());
227  
228             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
229  
230  
231             exception_lineno = 29;
232  
233             goto frame_exception_exit_1;
234         }
235         Py_DECREF(tmp_call_result_1);
236     }
237     {
238         PyObject *tmp_called_name_2;
239         PyObject *tmp_mvar_value_2;
240         PyObject *tmp_call_result_2;
241         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
242  
243         if (unlikely(tmp_mvar_value_2 == NULL)) {
244             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
245         }
246  
247         if (unlikely(tmp_mvar_value_2 == NULL)) {
248  
249             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
250             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
251             CHAIN_EXCEPTION(exception_value);
252  
253             exception_lineno = 30;
254  
255             goto frame_exception_exit_1;
256         }
257  
258         tmp_called_name_2 = tmp_mvar_value_2;
259         frame_70ce1f2b50fd7a7a6fb13df12da296e2->m_frame.f_lineno = 30;
260         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(mod_consts[2], 0));
261  
262         if (tmp_call_result_2 == NULL) {
263             assert(ERROR_OCCURRED());
264  
265             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
266  
267  
268             exception_lineno = 30;
269  
270             goto frame_exception_exit_1;
271         }
272         Py_DECREF(tmp_call_result_2);
273     }
274     {
275         PyObject *tmp_called_name_3;
276         PyObject *tmp_mvar_value_3;
277         PyObject *tmp_call_result_3;
278         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
279  
280         if (unlikely(tmp_mvar_value_3 == NULL)) {
281             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
282         }
283  
284         if (unlikely(tmp_mvar_value_3 == NULL)) {
285  
286             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
287             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
288             CHAIN_EXCEPTION(exception_value);
289  
290             exception_lineno = 31;
291  
292             goto frame_exception_exit_1;
293         }
294  
295         tmp_called_name_3 = tmp_mvar_value_3;
296         frame_70ce1f2b50fd7a7a6fb13df12da296e2->m_frame.f_lineno = 31;
297         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(mod_consts[3], 0));
298  
299         if (tmp_call_result_3 == NULL) {
300             assert(ERROR_OCCURRED());
301  
302             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
303  
304  
305             exception_lineno = 31;
306  
307             goto frame_exception_exit_1;
308         }
309         Py_DECREF(tmp_call_result_3);
310     }
311  
312 #if 0
313     RESTORE_FRAME_EXCEPTION(frame_70ce1f2b50fd7a7a6fb13df12da296e2);
314 #endif
315  
316     // Put the previous frame back on top.
317     popFrameStack();
318  
319     goto frame_no_exception_1;
320  
321     frame_exception_exit_1:;
322  
323 #if 0
324     RESTORE_FRAME_EXCEPTION(frame_70ce1f2b50fd7a7a6fb13df12da296e2);
325 #endif
326  
327     if (exception_tb == NULL) {
328         exception_tb = MAKE_TRACEBACK(frame_70ce1f2b50fd7a7a6fb13df12da296e2, exception_lineno);
329     } else if (exception_tb->tb_frame != &frame_70ce1f2b50fd7a7a6fb13df12da296e2->m_frame) {
330         exception_tb = ADD_TRACEBACK(exception_tb, frame_70ce1f2b50fd7a7a6fb13df12da296e2, exception_lineno);
331     }
332  
333     // Attachs locals to frame if any.
334     Nuitka_Frame_AttachLocals(
335         frame_70ce1f2b50fd7a7a6fb13df12da296e2,
336         type_description_1
337     );
338  
339  
340     // Release cached frame.
341     if (frame_70ce1f2b50fd7a7a6fb13df12da296e2 == cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2) {
342 #if _DEBUG_REFCOUNTS
343         count_active_frame_cache_instances -= 1;
344         count_released_frame_cache_instances += 1;
345 #endif
346  
347         Py_DECREF(frame_70ce1f2b50fd7a7a6fb13df12da296e2);
348     }
349     cache_frame_70ce1f2b50fd7a7a6fb13df12da296e2 = NULL;
350  
351     assertFrameObject(frame_70ce1f2b50fd7a7a6fb13df12da296e2);
352  
353     // Put the previous frame back on top.
354     popFrameStack();
355  
356     // Return the error.
357     goto function_exception_exit;
358  
359     frame_no_exception_1:;
360     tmp_return_value = Py_None;
361     Py_INCREF(tmp_return_value);
362     goto function_return_exit;
363  
364     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
365     return NULL;
366  
367 function_exception_exit:
368     assert(exception_type);
369     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
370  
371     return NULL;
372  
373 function_return_exit:
374    // Function cleanup code if any.
375  
376  
377    // Actual function exit with return value, making sure we did not make
378    // the error status worse despite non-NULL return.
379    CHECK_OBJECT(tmp_return_value);
380    assert(had_error || !ERROR_OCCURRED());
381    return tmp_return_value;
382 }
383  
384  
385 155
386 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() { 156 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() {
387     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 157     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
388         impl___main__$$$function_1_compiled_func, 158         impl___main__$$$function_1_compiled_func,
n 389         mod_consts[0], n 159         mod_consts[6],
390 #if PYTHON_VERSION >= 300 160 #if PYTHON_VERSION >= 300
391         NULL, 161         NULL,
392 #endif 162 #endif
393         codeobj_e16597bc74c47defd42ef826e13870f7, 163         codeobj_e16597bc74c47defd42ef826e13870f7,
394         NULL, 164         NULL,
407 177
408 178
409 179
410 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 180 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
411     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 181     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 412         impl___main__$$$function_2_calledRepeatedly, n 182         NULL,
413         mod_consts[10], 183         mod_consts[7],
414 #if PYTHON_VERSION >= 300 184 #if PYTHON_VERSION >= 300
415         NULL, 185         NULL,
416 #endif 186 #endif
n 417         codeobj_70ce1f2b50fd7a7a6fb13df12da296e2, n 187         codeobj_4030bf1979ca3381c9a2c011baeed53c,
418         NULL, 188         NULL,
419 #if PYTHON_VERSION >= 300 189 #if PYTHON_VERSION >= 300
420         NULL, 190         NULL,
421         NULL, 191         NULL,
422 #endif 192 #endif
442 // Provide a way to create find a function via its C code and create it back 212 // Provide a way to create find a function via its C code and create it back
443 // in another process, useful for multiprocessing extensions like dill 213 // in another process, useful for multiprocessing extensions like dill
444 214
445 function_impl_code functable___main__[] = { 215 function_impl_code functable___main__[] = {
446     impl___main__$$$function_1_compiled_func, 216     impl___main__$$$function_1_compiled_func,
n 447     impl___main__$$$function_2_calledRepeatedly, n 217     NULL,
448     NULL 218     NULL
449 }; 219 };
450 220
451 static char const *_reduce_compiled_function_argnames[] = { 221 static char const *_reduce_compiled_function_argnames[] = {
452     "func", 222     "func",
810 580
811     // Module code. 581     // Module code.
812     { 582     {
813         PyObject *tmp_assign_source_1; 583         PyObject *tmp_assign_source_1;
814         tmp_assign_source_1 = Py_None; 584         tmp_assign_source_1 = Py_None;
n 815         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 585         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_1);
816     } 586     }
817     { 587     {
818         PyObject *tmp_assign_source_2; 588         PyObject *tmp_assign_source_2;
n 819         tmp_assign_source_2 = mod_consts[5]; n 589         tmp_assign_source_2 = mod_consts[1];
820         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 590         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_2);
821     } 591     }
822     { 592     {
823         PyObject *tmp_assign_source_3; 593         PyObject *tmp_assign_source_3;
824         tmp_assign_source_3 = Py_None; 594         tmp_assign_source_3 = Py_None;
n 825         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 595         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_3);
826     } 596     }
827     // Frame without reuse. 597     // Frame without reuse.
828     frame_3a868dae346949dcead8f40c999d8c2e = MAKE_MODULE_FRAME(codeobj_3a868dae346949dcead8f40c999d8c2e, module___main__); 598     frame_3a868dae346949dcead8f40c999d8c2e = MAKE_MODULE_FRAME(codeobj_3a868dae346949dcead8f40c999d8c2e, module___main__);
829 599
830     // Push the new frame as the currently active one, and we should be exclusively 600     // Push the new frame as the currently active one, and we should be exclusively
841         assert(!(tmp_import_name_from_1 == NULL)); 611         assert(!(tmp_import_name_from_1 == NULL));
842         if (PyModule_Check(tmp_import_name_from_1)) { 612         if (PyModule_Check(tmp_import_name_from_1)) {
843             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 613             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
844                 tmp_import_name_from_1, 614                 tmp_import_name_from_1,
845                 (PyObject *)moduledict___main__, 615                 (PyObject *)moduledict___main__,
n 846                 mod_consts[8], n 616                 mod_consts[4],
847                 mod_consts[9] 617                 mod_consts[5]
848             ); 618             );
849         } else { 619         } else {
n 850             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[8]); n 620             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[4]);
851         } 621         }
852 622
853         if (tmp_assign_source_4 == NULL) { 623         if (tmp_assign_source_4 == NULL) {
854             assert(ERROR_OCCURRED()); 624             assert(ERROR_OCCURRED());
855 625
858 628
859             exception_lineno = 20; 629             exception_lineno = 20;
860 630
861             goto frame_exception_exit_1; 631             goto frame_exception_exit_1;
862         } 632         }
n 863         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 633         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_4);
864     } 634     }
865     { 635     {
866         PyObject *tmp_assign_source_5; 636         PyObject *tmp_assign_source_5;
867 637
868 638
869         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function_1_compiled_func(); 639         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function_1_compiled_func();
870 640
n 871         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); n 641         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_5);
872     } 642     }
873     { 643     {
874         PyObject *tmp_assign_source_6; 644         PyObject *tmp_assign_source_6;
875 645
876 646
877         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(); 647         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_2_calledRepeatedly();
878 648
n 879         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_6); n 649         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_6);
880     } 650     }
881     { 651     {
882         PyObject *tmp_assign_source_7; 652         PyObject *tmp_assign_source_7;
883         PyObject *tmp_name_name_1; 653         PyObject *tmp_name_name_1;
884         PyObject *tmp_globals_name_1; 654         PyObject *tmp_globals_name_1;
885         PyObject *tmp_locals_name_1; 655         PyObject *tmp_locals_name_1;
886         PyObject *tmp_fromlist_name_1; 656         PyObject *tmp_fromlist_name_1;
887         PyObject *tmp_level_name_1; 657         PyObject *tmp_level_name_1;
n 888         tmp_name_name_1 = mod_consts[11]; n 658         tmp_name_name_1 = mod_consts[8];
889         tmp_globals_name_1 = (PyObject *)moduledict___main__; 659         tmp_globals_name_1 = (PyObject *)moduledict___main__;
890         tmp_locals_name_1 = Py_None; 660         tmp_locals_name_1 = Py_None;
891         tmp_fromlist_name_1 = Py_None; 661         tmp_fromlist_name_1 = Py_None;
n 892         tmp_level_name_1 = mod_consts[9]; n 662         tmp_level_name_1 = mod_consts[5];
893         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 36; 663         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 36;
894         tmp_assign_source_7 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1); 664         tmp_assign_source_7 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1);
895         assert(!(tmp_assign_source_7 == NULL)); 665         assert(!(tmp_assign_source_7 == NULL));
n 896         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_7); n 666         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_7);
897     } 667     }
898     { 668     {
899         PyObject *tmp_assign_source_8; 669         PyObject *tmp_assign_source_8;
900         PyObject *tmp_iter_arg_1; 670         PyObject *tmp_iter_arg_1;
901         PyObject *tmp_called_instance_1; 671         PyObject *tmp_called_instance_1;
902         PyObject *tmp_mvar_value_1; 672         PyObject *tmp_mvar_value_1;
n 903         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[11]); n 673         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]);
904 674
905         if (unlikely(tmp_mvar_value_1 == NULL)) { 675         if (unlikely(tmp_mvar_value_1 == NULL)) {
n 906             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[11]); n 676             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[8]);
907         } 677         }
908 678
909         CHECK_OBJECT(tmp_mvar_value_1); 679         CHECK_OBJECT(tmp_mvar_value_1);
910         tmp_called_instance_1 = tmp_mvar_value_1; 680         tmp_called_instance_1 = tmp_mvar_value_1;
911         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 37; 681         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 37;
n 912         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[12], &PyTuple_GET_ITEM(mod_consts[13], 0)); n 682         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[9], &PyTuple_GET_ITEM(mod_consts[10], 0));
913 683
914         if (tmp_iter_arg_1 == NULL) { 684         if (tmp_iter_arg_1 == NULL) {
915             assert(ERROR_OCCURRED()); 685             assert(ERROR_OCCURRED());
916 686
917             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 687             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
966     } 736     }
967     { 737     {
968         PyObject *tmp_assign_source_10; 738         PyObject *tmp_assign_source_10;
969         CHECK_OBJECT(tmp_for_loop_1__iter_value); 739         CHECK_OBJECT(tmp_for_loop_1__iter_value);
970         tmp_assign_source_10 = tmp_for_loop_1__iter_value; 740         tmp_assign_source_10 = tmp_for_loop_1__iter_value;
n 971         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_10); n 741         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_10);
972     } 742     }
973     { 743     {
974         PyObject *tmp_called_name_1; 744         PyObject *tmp_called_name_1;
975         PyObject *tmp_mvar_value_2; 745         PyObject *tmp_mvar_value_2;
976         PyObject *tmp_call_result_1; 746         PyObject *tmp_call_result_1;
n 977         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]); n 747         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[7]);
978 748
979         if (unlikely(tmp_mvar_value_2 == NULL)) { 749         if (unlikely(tmp_mvar_value_2 == NULL)) {
n 980             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[10]); n 750             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[7]);
981         } 751         }
982 752
983         if (unlikely(tmp_mvar_value_2 == NULL)) { 753         if (unlikely(tmp_mvar_value_2 == NULL)) {
984 754
n 985             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[10]); n 755             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[7]);
986             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 756             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
987             CHAIN_EXCEPTION(exception_value); 757             CHAIN_EXCEPTION(exception_value);
988 758
989             exception_lineno = 38; 759             exception_lineno = 38;
990 760
1054     tmp_for_loop_1__for_iterator = NULL; 824     tmp_for_loop_1__for_iterator = NULL;
1055 825
1056     { 826     {
1057         PyObject *tmp_called_name_2; 827         PyObject *tmp_called_name_2;
1058         PyObject *tmp_call_result_2; 828         PyObject *tmp_call_result_2;
n 1059         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[15]); n 829         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[12]);
1060         assert(tmp_called_name_2 != NULL); 830         assert(tmp_called_name_2 != NULL);
1061         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 40; 831         frame_3a868dae346949dcead8f40c999d8c2e->m_frame.f_lineno = 40;
t 1062         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[16]); t 832         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[13]);
1063         if (tmp_call_result_2 == NULL) { 833         if (tmp_call_result_2 == NULL) {
1064             assert(ERROR_OCCURRED()); 834             assert(ERROR_OCCURRED());
1065 835
1066             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 836             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1067 837