Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)12499055888.11538461538461257.0CPython 2.792723348240.03846153846155320.7946108666495Nuitka (master)92723348391.96153846153845320.7946108666495Nuitka (develop)92724451543.8846153846154320.7924301557735Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)12846358388.11538461538461257.0CPython 3.592961045240.03846153846155325.29346595986124Nuitka (master)92958756391.96153846153845325.2978691308002Nuitka (develop)92956767543.8846153846154325.3016952151155Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks

Source Code with Construct

from __future__ import print_function

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    python_func("some", "random", "values", "to", "check", "call")
    python_func("some", "other", "values", "to", "check", "call")
    python_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

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

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
26 26
27 def calledRepeatedly(): 27 def calledRepeatedly():
28     # This is supposed to make a call to a non-compiled function, which is 28     # This is supposed to make a call to a non-compiled function, which is
29     # being optimized separately. 29     # being optimized separately.
30 # construct_begin 30 # construct_begin
n 31     python_func("some", "random", "values", "to", "check", "call") n
32     python_func("some", "other", "values", "to", "check", "call")
33     python_func("some", "new", "values", "to", "check", "call")
34 # construct_alternative
35 31
36 32
t t 33  
34 # construct_alternative
35     pass
36 # construct_end
37 37
38 import itertools 38 import itertools
39 for x in itertools.repeat(None, 50000): 39 for x in itertools.repeat(None, 50000):
40     calledRepeatedly() 40     calledRepeatedly()
41 41

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[22]; n 36 static PyObject *mod_consts[18];
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__", 22); n 45     loadConstantsBlob(&mod_consts[0], "__main__", 18);
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__", 22); n 56     checkConstantsBlob(&mod_consts[0], "__main__", 18);
57 } 57 }
58 #endif 58 #endif
59 59
60 // The module code objects. 60 // The module code objects.
61 static PyCodeObject *codeobj_4a3b3f6cf547034bf1851628ecad2389; 61 static PyCodeObject *codeobj_4a3b3f6cf547034bf1851628ecad2389;
n 62 static PyCodeObject *codeobj_b1ff06eb4f3e12b16aae082d8f2fef5e; n 62 static PyCodeObject *codeobj_aaaf11fb4e8d9eaa5434702b6cda8276;
63 /* For use in "MainProgram.c". */ 63 /* For use in "MainProgram.c". */
64 PyCodeObject *codeobj_main = NULL; 64 PyCodeObject *codeobj_main = NULL;
65 65
66 static void createModuleCodeObjects(void) { 66 static void createModuleCodeObjects(void) {
n 67     module_filename_obj = mod_consts[5]; CHECK_OBJECT(module_filename_obj); n 67     module_filename_obj = mod_consts[1]; CHECK_OBJECT(module_filename_obj);
68     codeobj_4a3b3f6cf547034bf1851628ecad2389 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[20], mod_consts[21], 0, 0, 0); 68     codeobj_4a3b3f6cf547034bf1851628ecad2389 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], mod_consts[17], 0, 0, 0);
69     codeobj_b1ff06eb4f3e12b16aae082d8f2fef5e = MAKE_CODEOBJECT(module_filename_obj, 27, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[13], mod_consts[21], 0, 0, 0); 69     codeobj_aaaf11fb4e8d9eaa5434702b6cda8276 = MAKE_CODEOBJECT(module_filename_obj, 27, CO_NOFREE, mod_consts[9], mod_consts[17], 0, 0, 0);
70 } 70 }
71 71
72 // The module function declarations. 72 // The module function declarations.
73 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 73 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
74 74
75 75
76 // The module function definitions. 76 // The module function definitions.
n 77 static PyObject *impl___main__$$$function_1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
78     // Preserve error status for checks
79 #ifndef __NUITKA_NO_ASSERT__
80     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
81 #endif
82  
83     // Local variable declarations.
84     struct Nuitka_FrameObject *frame_b1ff06eb4f3e12b16aae082d8f2fef5e;
85     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
86     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
87     PyObject *exception_type = NULL;
88     PyObject *exception_value = NULL;
89     PyTracebackObject *exception_tb = NULL;
90     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
91     static struct Nuitka_FrameObject *cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e = NULL;
92     PyObject *tmp_return_value = NULL;
93  
94     // Actual function body.
95     if (isFrameUnusable(cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e)) {
96         Py_XDECREF(cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
97  
98 #if _DEBUG_REFCOUNTS
99         if (cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e == NULL) {
100             count_active_frame_cache_instances += 1;
101         } else {
102             count_released_frame_cache_instances += 1;
103         }
104         count_allocated_frame_cache_instances += 1;
105 #endif
106         cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e = MAKE_FUNCTION_FRAME(codeobj_b1ff06eb4f3e12b16aae082d8f2fef5e, module___main__, 0);
107 #if _DEBUG_REFCOUNTS
108     } else {
109         count_hit_frame_cache_instances += 1;
110 #endif
111     }
112     assert(cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e->m_type_description == NULL);
113     frame_b1ff06eb4f3e12b16aae082d8f2fef5e = cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e;
114  
115     // Push the new frame as the currently active one.
116     pushFrameStack(frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
117  
118     // Mark the frame object as in use, ref count 1 will be up for reuse.
119     assert(Py_REFCNT(frame_b1ff06eb4f3e12b16aae082d8f2fef5e) == 2); // Frame stack
120  
121     // Framed code:
122     {
123         PyObject *tmp_called_name_1;
124         PyObject *tmp_mvar_value_1;
125         PyObject *tmp_call_result_1;
126         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
127  
128         if (unlikely(tmp_mvar_value_1 == NULL)) {
129             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
130         }
131  
132         if (unlikely(tmp_mvar_value_1 == NULL)) {
133  
134             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
135             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
136             CHAIN_EXCEPTION(exception_value);
137  
138             exception_lineno = 31;
139  
140             goto frame_exception_exit_1;
141         }
142  
143         tmp_called_name_1 = tmp_mvar_value_1;
144         frame_b1ff06eb4f3e12b16aae082d8f2fef5e->m_frame.f_lineno = 31;
145         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(mod_consts[1], 0));
146  
147         if (tmp_call_result_1 == NULL) {
148             assert(ERROR_OCCURRED());
149  
150             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
151  
152  
153             exception_lineno = 31;
154  
155             goto frame_exception_exit_1;
156         }
157         Py_DECREF(tmp_call_result_1);
158     }
159     {
160         PyObject *tmp_called_name_2;
161         PyObject *tmp_mvar_value_2;
162         PyObject *tmp_call_result_2;
163         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
164  
165         if (unlikely(tmp_mvar_value_2 == NULL)) {
166             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
167         }
168  
169         if (unlikely(tmp_mvar_value_2 == NULL)) {
170  
171             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
172             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
173             CHAIN_EXCEPTION(exception_value);
174  
175             exception_lineno = 32;
176  
177             goto frame_exception_exit_1;
178         }
179  
180         tmp_called_name_2 = tmp_mvar_value_2;
181         frame_b1ff06eb4f3e12b16aae082d8f2fef5e->m_frame.f_lineno = 32;
182         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(mod_consts[2], 0));
183  
184         if (tmp_call_result_2 == NULL) {
185             assert(ERROR_OCCURRED());
186  
187             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
188  
189  
190             exception_lineno = 32;
191  
192             goto frame_exception_exit_1;
193         }
194         Py_DECREF(tmp_call_result_2);
195     }
196     {
197         PyObject *tmp_called_name_3;
198         PyObject *tmp_mvar_value_3;
199         PyObject *tmp_call_result_3;
200         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
201  
202         if (unlikely(tmp_mvar_value_3 == NULL)) {
203             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[0]);
204         }
205  
206         if (unlikely(tmp_mvar_value_3 == NULL)) {
207  
208             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
209             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
210             CHAIN_EXCEPTION(exception_value);
211  
212             exception_lineno = 33;
213  
214             goto frame_exception_exit_1;
215         }
216  
217         tmp_called_name_3 = tmp_mvar_value_3;
218         frame_b1ff06eb4f3e12b16aae082d8f2fef5e->m_frame.f_lineno = 33;
219         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(mod_consts[3], 0));
220  
221         if (tmp_call_result_3 == NULL) {
222             assert(ERROR_OCCURRED());
223  
224             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
225  
226  
227             exception_lineno = 33;
228  
229             goto frame_exception_exit_1;
230         }
231         Py_DECREF(tmp_call_result_3);
232     }
233  
234 #if 0
235     RESTORE_FRAME_EXCEPTION(frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
236 #endif
237  
238     // Put the previous frame back on top.
239     popFrameStack();
240  
241     goto frame_no_exception_1;
242  
243     frame_exception_exit_1:;
244  
245 #if 0
246     RESTORE_FRAME_EXCEPTION(frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
247 #endif
248  
249     if (exception_tb == NULL) {
250         exception_tb = MAKE_TRACEBACK(frame_b1ff06eb4f3e12b16aae082d8f2fef5e, exception_lineno);
251     } else if (exception_tb->tb_frame != &frame_b1ff06eb4f3e12b16aae082d8f2fef5e->m_frame) {
252         exception_tb = ADD_TRACEBACK(exception_tb, frame_b1ff06eb4f3e12b16aae082d8f2fef5e, exception_lineno);
253     }
254  
255     // Attachs locals to frame if any.
256     Nuitka_Frame_AttachLocals(
257         frame_b1ff06eb4f3e12b16aae082d8f2fef5e,
258         type_description_1
259     );
260  
261  
262     // Release cached frame.
263     if (frame_b1ff06eb4f3e12b16aae082d8f2fef5e == cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e) {
264 #if _DEBUG_REFCOUNTS
265         count_active_frame_cache_instances -= 1;
266         count_released_frame_cache_instances += 1;
267 #endif
268  
269         Py_DECREF(frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
270     }
271     cache_frame_b1ff06eb4f3e12b16aae082d8f2fef5e = NULL;
272  
273     assertFrameObject(frame_b1ff06eb4f3e12b16aae082d8f2fef5e);
274  
275     // Put the previous frame back on top.
276     popFrameStack();
277  
278     // Return the error.
279     goto function_exception_exit;
280  
281     frame_no_exception_1:;
282     tmp_return_value = Py_None;
283     Py_INCREF(tmp_return_value);
284     goto function_return_exit;
285  
286     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
287     return NULL;
288  
289 function_exception_exit:
290     assert(exception_type);
291     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
292  
293     return NULL;
294  
295 function_return_exit:
296    // Function cleanup code if any.
297  
298  
299    // Actual function exit with return value, making sure we did not make
300    // the error status worse despite non-NULL return.
301    CHECK_OBJECT(tmp_return_value);
302    assert(had_error || !ERROR_OCCURRED());
303    return tmp_return_value;
304 }
305  
306  
307 77
308 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() { 78 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() {
309     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 79     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 310         impl___main__$$$function_1_calledRepeatedly, n 80         NULL,
311         mod_consts[13], 81         mod_consts[9],
312 #if PYTHON_VERSION >= 300 82 #if PYTHON_VERSION >= 300
313         NULL, 83         NULL,
314 #endif 84 #endif
n 315         codeobj_b1ff06eb4f3e12b16aae082d8f2fef5e, n 85         codeobj_aaaf11fb4e8d9eaa5434702b6cda8276,
316         NULL, 86         NULL,
317 #if PYTHON_VERSION >= 300 87 #if PYTHON_VERSION >= 300
318         NULL, 88         NULL,
319         NULL, 89         NULL,
320 #endif 90 #endif
339 #ifdef _NUITKA_PLUGIN_DILL_ENABLED 109 #ifdef _NUITKA_PLUGIN_DILL_ENABLED
340 // Provide a way to create find a function via its C code and create it back 110 // Provide a way to create find a function via its C code and create it back
341 // in another process, useful for multiprocessing extensions like dill 111 // in another process, useful for multiprocessing extensions like dill
342 112
343 function_impl_code functable___main__[] = { 113 function_impl_code functable___main__[] = {
n 344     impl___main__$$$function_1_calledRepeatedly, n 114     NULL,
345     NULL 115     NULL
346 }; 116 };
347 117
348 static char const *_reduce_compiled_function_argnames[] = { 118 static char const *_reduce_compiled_function_argnames[] = {
349     "func", 119     "func",
713 483
714     // Module code. 484     // Module code.
715     { 485     {
716         PyObject *tmp_assign_source_1; 486         PyObject *tmp_assign_source_1;
717         tmp_assign_source_1 = Py_None; 487         tmp_assign_source_1 = Py_None;
n 718         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 488         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_1);
719     } 489     }
720     { 490     {
721         PyObject *tmp_assign_source_2; 491         PyObject *tmp_assign_source_2;
n 722         tmp_assign_source_2 = mod_consts[5]; n 492         tmp_assign_source_2 = mod_consts[1];
723         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 493         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_2);
724     } 494     }
725     { 495     {
726         PyObject *tmp_assign_source_3; 496         PyObject *tmp_assign_source_3;
727         tmp_assign_source_3 = Py_None; 497         tmp_assign_source_3 = Py_None;
n 728         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 498         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_3);
729     } 499     }
730     // Frame without reuse. 500     // Frame without reuse.
731     frame_4a3b3f6cf547034bf1851628ecad2389 = MAKE_MODULE_FRAME(codeobj_4a3b3f6cf547034bf1851628ecad2389, module___main__); 501     frame_4a3b3f6cf547034bf1851628ecad2389 = MAKE_MODULE_FRAME(codeobj_4a3b3f6cf547034bf1851628ecad2389, module___main__);
732 502
733     // Push the new frame as the currently active one, and we should be exclusively 503     // Push the new frame as the currently active one, and we should be exclusively
744         assert(!(tmp_import_name_from_1 == NULL)); 514         assert(!(tmp_import_name_from_1 == NULL));
745         if (PyModule_Check(tmp_import_name_from_1)) { 515         if (PyModule_Check(tmp_import_name_from_1)) {
746             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 516             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
747                 tmp_import_name_from_1, 517                 tmp_import_name_from_1,
748                 (PyObject *)moduledict___main__, 518                 (PyObject *)moduledict___main__,
n 749                 mod_consts[8], n 519                 mod_consts[4],
750                 mod_consts[9] 520                 mod_consts[5]
751             ); 521             );
752         } else { 522         } else {
n 753             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[8]); n 523             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[4]);
754         } 524         }
755 525
756         if (tmp_assign_source_4 == NULL) { 526         if (tmp_assign_source_4 == NULL) {
757             assert(ERROR_OCCURRED()); 527             assert(ERROR_OCCURRED());
758 528
761 531
762             exception_lineno = 20; 532             exception_lineno = 20;
763 533
764             goto frame_exception_exit_1; 534             goto frame_exception_exit_1;
765         } 535         }
n 766         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 536         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_4);
767     } 537     }
768     { 538     {
769         PyObject *tmp_outline_return_value_1; 539         PyObject *tmp_outline_return_value_1;
770         { 540         {
771             PyObject *tmp_assign_source_5; 541             PyObject *tmp_assign_source_5;
785         { 555         {
786             PyObject *tmp_eval_source_1; 556             PyObject *tmp_eval_source_1;
787             PyObject *tmp_eval_globals_1; 557             PyObject *tmp_eval_globals_1;
788             PyObject *tmp_eval_locals_1; 558             PyObject *tmp_eval_locals_1;
789             PyObject *tmp_eval_compiled_1; 559             PyObject *tmp_eval_compiled_1;
n 790             tmp_eval_source_1 = mod_consts[10]; n 560             tmp_eval_source_1 = mod_consts[6];
791             CHECK_OBJECT(tmp_exec_call_1__globals); 561             CHECK_OBJECT(tmp_exec_call_1__globals);
792             tmp_eval_globals_1 = tmp_exec_call_1__globals; 562             tmp_eval_globals_1 = tmp_exec_call_1__globals;
793             CHECK_OBJECT(tmp_exec_call_1__locals); 563             CHECK_OBJECT(tmp_exec_call_1__locals);
794             tmp_eval_locals_1 = tmp_exec_call_1__locals; 564             tmp_eval_locals_1 = tmp_exec_call_1__locals;
n 795             tmp_eval_compiled_1 = COMPILE_CODE(tmp_eval_source_1, mod_consts[11], mod_consts[12], NULL, NULL, NULL); n 565             tmp_eval_compiled_1 = COMPILE_CODE(tmp_eval_source_1, mod_consts[7], mod_consts[8], NULL, NULL, NULL);
796             if (tmp_eval_compiled_1 == NULL) { 566             if (tmp_eval_compiled_1 == NULL) {
797                 assert(ERROR_OCCURRED()); 567                 assert(ERROR_OCCURRED());
798 568
799                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 569                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
800 570
866         PyObject *tmp_assign_source_7; 636         PyObject *tmp_assign_source_7;
867 637
868 638
869         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 639         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
870 640
n 871         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_7); n 641         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_7);
872     } 642     }
873     { 643     {
874         PyObject *tmp_assign_source_8; 644         PyObject *tmp_assign_source_8;
875         PyObject *tmp_name_name_1; 645         PyObject *tmp_name_name_1;
876         PyObject *tmp_globals_name_1; 646         PyObject *tmp_globals_name_1;
877         PyObject *tmp_locals_name_1; 647         PyObject *tmp_locals_name_1;
878         PyObject *tmp_fromlist_name_1; 648         PyObject *tmp_fromlist_name_1;
879         PyObject *tmp_level_name_1; 649         PyObject *tmp_level_name_1;
n 880         tmp_name_name_1 = mod_consts[14]; n 650         tmp_name_name_1 = mod_consts[10];
881         tmp_globals_name_1 = (PyObject *)moduledict___main__; 651         tmp_globals_name_1 = (PyObject *)moduledict___main__;
882         tmp_locals_name_1 = Py_None; 652         tmp_locals_name_1 = Py_None;
883         tmp_fromlist_name_1 = Py_None; 653         tmp_fromlist_name_1 = Py_None;
n 884         tmp_level_name_1 = mod_consts[9]; n 654         tmp_level_name_1 = mod_consts[5];
885         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 38; 655         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 38;
886         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1); 656         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1);
887         assert(!(tmp_assign_source_8 == NULL)); 657         assert(!(tmp_assign_source_8 == NULL));
n 888         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_8); n 658         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8);
889     } 659     }
890     { 660     {
891         PyObject *tmp_assign_source_9; 661         PyObject *tmp_assign_source_9;
892         PyObject *tmp_iter_arg_1; 662         PyObject *tmp_iter_arg_1;
893         PyObject *tmp_called_instance_1; 663         PyObject *tmp_called_instance_1;
894         PyObject *tmp_mvar_value_1; 664         PyObject *tmp_mvar_value_1;
n 895         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[14]); n 665         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]);
896 666
897         if (unlikely(tmp_mvar_value_1 == NULL)) { 667         if (unlikely(tmp_mvar_value_1 == NULL)) {
n 898             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[14]); n 668             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[10]);
899         } 669         }
900 670
901         CHECK_OBJECT(tmp_mvar_value_1); 671         CHECK_OBJECT(tmp_mvar_value_1);
902         tmp_called_instance_1 = tmp_mvar_value_1; 672         tmp_called_instance_1 = tmp_mvar_value_1;
903         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 39; 673         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 39;
n 904         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[15], &PyTuple_GET_ITEM(mod_consts[16], 0)); n 674         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[11], &PyTuple_GET_ITEM(mod_consts[12], 0));
905 675
906         if (tmp_iter_arg_1 == NULL) { 676         if (tmp_iter_arg_1 == NULL) {
907             assert(ERROR_OCCURRED()); 677             assert(ERROR_OCCURRED());
908 678
909             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 679             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
958     } 728     }
959     { 729     {
960         PyObject *tmp_assign_source_11; 730         PyObject *tmp_assign_source_11;
961         CHECK_OBJECT(tmp_for_loop_1__iter_value); 731         CHECK_OBJECT(tmp_for_loop_1__iter_value);
962         tmp_assign_source_11 = tmp_for_loop_1__iter_value; 732         tmp_assign_source_11 = tmp_for_loop_1__iter_value;
n 963         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[17], tmp_assign_source_11); n 733         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_11);
964     } 734     }
965     { 735     {
966         PyObject *tmp_called_name_1; 736         PyObject *tmp_called_name_1;
967         PyObject *tmp_mvar_value_2; 737         PyObject *tmp_mvar_value_2;
968         PyObject *tmp_call_result_1; 738         PyObject *tmp_call_result_1;
n 969         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[13]); n 739         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
970 740
971         if (unlikely(tmp_mvar_value_2 == NULL)) { 741         if (unlikely(tmp_mvar_value_2 == NULL)) {
n 972             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[13]); n 742             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[9]);
973         } 743         }
974 744
975         if (unlikely(tmp_mvar_value_2 == NULL)) { 745         if (unlikely(tmp_mvar_value_2 == NULL)) {
976 746
n 977             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[13]); n 747             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[9]);
978             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 748             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
979             CHAIN_EXCEPTION(exception_value); 749             CHAIN_EXCEPTION(exception_value);
980 750
981             exception_lineno = 40; 751             exception_lineno = 40;
982 752
1046     tmp_for_loop_1__for_iterator = NULL; 816     tmp_for_loop_1__for_iterator = NULL;
1047 817
1048     { 818     {
1049         PyObject *tmp_called_name_2; 819         PyObject *tmp_called_name_2;
1050         PyObject *tmp_call_result_2; 820         PyObject *tmp_call_result_2;
n 1051         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[18]); n 821         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[14]);
1052         assert(tmp_called_name_2 != NULL); 822         assert(tmp_called_name_2 != NULL);
1053         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 42; 823         frame_4a3b3f6cf547034bf1851628ecad2389->m_frame.f_lineno = 42;
t 1054         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[19]); t 824         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[15]);
1055         if (tmp_call_result_2 == NULL) { 825         if (tmp_call_result_2 == NULL) {
1056             assert(ERROR_OCCURRED()); 826             assert(ERROR_OCCURRED());
1057 827
1058             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 828             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1059 829