Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)12499068088.11538461538461257.0CPython 2.792724419240.03846153846155320.7926723585741Nuitka (master)94474417391.96153846153845317.33280295994257Nuitka (develop)94474417543.8846153846154317.33280295994257Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)12846359388.11538461538461257.0CPython 3.592956544240.03846153846155325.30213810221164Nuitka (master)95856638391.96153846153845319.7234536866919Nuitka (develop)95856638543.8846153846154319.7234536866919Nuitka (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_116f29906036c44922c76936a8aa7a7d; 61 static PyCodeObject *codeobj_116f29906036c44922c76936a8aa7a7d;
n 62 static PyCodeObject *codeobj_a4668566fc7c92ec9d20428468433d5f; n 62 static PyCodeObject *codeobj_5733eb320cc01e8f6228526e70c3bf25;
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_116f29906036c44922c76936a8aa7a7d = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[20], mod_consts[21], 0, 0, 0); 68     codeobj_116f29906036c44922c76936a8aa7a7d = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], mod_consts[17], 0, 0, 0);
69     codeobj_a4668566fc7c92ec9d20428468433d5f = MAKE_CODEOBJECT(module_filename_obj, 27, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[13], mod_consts[21], 0, 0, 0); 69     codeobj_5733eb320cc01e8f6228526e70c3bf25 = 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_a4668566fc7c92ec9d20428468433d5f;
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_a4668566fc7c92ec9d20428468433d5f = NULL;
92     PyObject *tmp_return_value = NULL;
93  
94     // Actual function body.
95     if (isFrameUnusable(cache_frame_a4668566fc7c92ec9d20428468433d5f)) {
96         Py_XDECREF(cache_frame_a4668566fc7c92ec9d20428468433d5f);
97  
98 #if _DEBUG_REFCOUNTS
99         if (cache_frame_a4668566fc7c92ec9d20428468433d5f == 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_a4668566fc7c92ec9d20428468433d5f = MAKE_FUNCTION_FRAME(codeobj_a4668566fc7c92ec9d20428468433d5f, module___main__, 0);
107 #if _DEBUG_REFCOUNTS
108     } else {
109         count_hit_frame_cache_instances += 1;
110 #endif
111     }
112     assert(cache_frame_a4668566fc7c92ec9d20428468433d5f->m_type_description == NULL);
113     frame_a4668566fc7c92ec9d20428468433d5f = cache_frame_a4668566fc7c92ec9d20428468433d5f;
114  
115     // Push the new frame as the currently active one.
116     pushFrameStack(frame_a4668566fc7c92ec9d20428468433d5f);
117  
118     // Mark the frame object as in use, ref count 1 will be up for reuse.
119     assert(Py_REFCNT(frame_a4668566fc7c92ec9d20428468433d5f) == 2); // Frame stack
120  
121     // Framed code:
122     {
123         PyObject *tmp_called_name_1;
124         PyObject *tmp_call_result_1;
125         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
126         if (tmp_called_name_1 == NULL) {
127             assert(ERROR_OCCURRED());
128  
129             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
130  
131  
132             exception_lineno = 31;
133  
134             goto frame_exception_exit_1;
135         }
136         frame_a4668566fc7c92ec9d20428468433d5f->m_frame.f_lineno = 31;
137         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(mod_consts[1], 0));
138  
139         if (tmp_call_result_1 == NULL) {
140             assert(ERROR_OCCURRED());
141  
142             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
143  
144  
145             exception_lineno = 31;
146  
147             goto frame_exception_exit_1;
148         }
149         Py_DECREF(tmp_call_result_1);
150     }
151     {
152         PyObject *tmp_called_name_2;
153         PyObject *tmp_call_result_2;
154         tmp_called_name_2 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
155         if (tmp_called_name_2 == NULL) {
156             assert(ERROR_OCCURRED());
157  
158             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
159  
160  
161             exception_lineno = 32;
162  
163             goto frame_exception_exit_1;
164         }
165         frame_a4668566fc7c92ec9d20428468433d5f->m_frame.f_lineno = 32;
166         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(mod_consts[2], 0));
167  
168         if (tmp_call_result_2 == NULL) {
169             assert(ERROR_OCCURRED());
170  
171             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
172  
173  
174             exception_lineno = 32;
175  
176             goto frame_exception_exit_1;
177         }
178         Py_DECREF(tmp_call_result_2);
179     }
180     {
181         PyObject *tmp_called_name_3;
182         PyObject *tmp_call_result_3;
183         tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
184         if (tmp_called_name_3 == NULL) {
185             assert(ERROR_OCCURRED());
186  
187             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
188  
189  
190             exception_lineno = 33;
191  
192             goto frame_exception_exit_1;
193         }
194         frame_a4668566fc7c92ec9d20428468433d5f->m_frame.f_lineno = 33;
195         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(mod_consts[3], 0));
196  
197         if (tmp_call_result_3 == NULL) {
198             assert(ERROR_OCCURRED());
199  
200             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
201  
202  
203             exception_lineno = 33;
204  
205             goto frame_exception_exit_1;
206         }
207         Py_DECREF(tmp_call_result_3);
208     }
209  
210 #if 0
211     RESTORE_FRAME_EXCEPTION(frame_a4668566fc7c92ec9d20428468433d5f);
212 #endif
213  
214     // Put the previous frame back on top.
215     popFrameStack();
216  
217     goto frame_no_exception_1;
218  
219     frame_exception_exit_1:;
220  
221 #if 0
222     RESTORE_FRAME_EXCEPTION(frame_a4668566fc7c92ec9d20428468433d5f);
223 #endif
224  
225     if (exception_tb == NULL) {
226         exception_tb = MAKE_TRACEBACK(frame_a4668566fc7c92ec9d20428468433d5f, exception_lineno);
227     } else if (exception_tb->tb_frame != &frame_a4668566fc7c92ec9d20428468433d5f->m_frame) {
228         exception_tb = ADD_TRACEBACK(exception_tb, frame_a4668566fc7c92ec9d20428468433d5f, exception_lineno);
229     }
230  
231     // Attaches locals to frame if any.
232     Nuitka_Frame_AttachLocals(
233         frame_a4668566fc7c92ec9d20428468433d5f,
234         type_description_1
235     );
236  
237  
238     // Release cached frame.
239     if (frame_a4668566fc7c92ec9d20428468433d5f == cache_frame_a4668566fc7c92ec9d20428468433d5f) {
240 #if _DEBUG_REFCOUNTS
241         count_active_frame_cache_instances -= 1;
242         count_released_frame_cache_instances += 1;
243 #endif
244  
245         Py_DECREF(frame_a4668566fc7c92ec9d20428468433d5f);
246     }
247     cache_frame_a4668566fc7c92ec9d20428468433d5f = NULL;
248  
249     assertFrameObject(frame_a4668566fc7c92ec9d20428468433d5f);
250  
251     // Put the previous frame back on top.
252     popFrameStack();
253  
254     // Return the error.
255     goto function_exception_exit;
256  
257     frame_no_exception_1:;
258     tmp_return_value = Py_None;
259     Py_INCREF(tmp_return_value);
260     goto function_return_exit;
261  
262     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
263     return NULL;
264  
265 function_exception_exit:
266     assert(exception_type);
267     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
268  
269     return NULL;
270  
271 function_return_exit:
272    // Function cleanup code if any.
273  
274  
275    // Actual function exit with return value, making sure we did not make
276    // the error status worse despite non-NULL return.
277    CHECK_OBJECT(tmp_return_value);
278    assert(had_error || !ERROR_OCCURRED());
279    return tmp_return_value;
280 }
281  
282  
283 77
284 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() { 78 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() {
285     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 79     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 286         impl___main__$$$function_1_calledRepeatedly, n 80         NULL,
287         mod_consts[13], 81         mod_consts[9],
288 #if PYTHON_VERSION >= 300 82 #if PYTHON_VERSION >= 300
289         NULL, 83         NULL,
290 #endif 84 #endif
n 291         codeobj_a4668566fc7c92ec9d20428468433d5f, n 85         codeobj_5733eb320cc01e8f6228526e70c3bf25,
292         NULL, 86         NULL,
293 #if PYTHON_VERSION >= 300 87 #if PYTHON_VERSION >= 300
294         NULL, 88         NULL,
295         NULL, 89         NULL,
296 #endif 90 #endif
316 #ifdef _NUITKA_PLUGIN_DILL_ENABLED 110 #ifdef _NUITKA_PLUGIN_DILL_ENABLED
317 // Provide a way to create find a function via its C code and create it back 111 // Provide a way to create find a function via its C code and create it back
318 // in another process, useful for multiprocessing extensions like dill 112 // in another process, useful for multiprocessing extensions like dill
319 113
320 function_impl_code functable___main__[] = { 114 function_impl_code functable___main__[] = {
n 321     impl___main__$$$function_1_calledRepeatedly, n 115     NULL,
322     NULL 116     NULL
323 }; 117 };
324 118
325 static char const *_reduce_compiled_function_argnames[] = { 119 static char const *_reduce_compiled_function_argnames[] = {
326     "func", 120     "func",
690 484
691     // Module code. 485     // Module code.
692     { 486     {
693         PyObject *tmp_assign_source_1; 487         PyObject *tmp_assign_source_1;
694         tmp_assign_source_1 = Py_None; 488         tmp_assign_source_1 = Py_None;
n 695         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 489         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_1);
696     } 490     }
697     { 491     {
698         PyObject *tmp_assign_source_2; 492         PyObject *tmp_assign_source_2;
n 699         tmp_assign_source_2 = mod_consts[5]; n 493         tmp_assign_source_2 = mod_consts[1];
700         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 494         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_2);
701     } 495     }
702     { 496     {
703         PyObject *tmp_assign_source_3; 497         PyObject *tmp_assign_source_3;
704         tmp_assign_source_3 = Py_None; 498         tmp_assign_source_3 = Py_None;
n 705         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 499         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_3);
706     } 500     }
707     // Frame without reuse. 501     // Frame without reuse.
708     frame_116f29906036c44922c76936a8aa7a7d = MAKE_MODULE_FRAME(codeobj_116f29906036c44922c76936a8aa7a7d, module___main__); 502     frame_116f29906036c44922c76936a8aa7a7d = MAKE_MODULE_FRAME(codeobj_116f29906036c44922c76936a8aa7a7d, module___main__);
709 503
710     // Push the new frame as the currently active one, and we should be exclusively 504     // Push the new frame as the currently active one, and we should be exclusively
721         assert(!(tmp_import_name_from_1 == NULL)); 515         assert(!(tmp_import_name_from_1 == NULL));
722         if (PyModule_Check(tmp_import_name_from_1)) { 516         if (PyModule_Check(tmp_import_name_from_1)) {
723             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 517             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
724                 tmp_import_name_from_1, 518                 tmp_import_name_from_1,
725                 (PyObject *)moduledict___main__, 519                 (PyObject *)moduledict___main__,
n 726                 mod_consts[8], n 520                 mod_consts[4],
727                 mod_consts[9] 521                 mod_consts[5]
728             ); 522             );
729         } else { 523         } else {
n 730             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[8]); n 524             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[4]);
731         } 525         }
732 526
733         if (tmp_assign_source_4 == NULL) { 527         if (tmp_assign_source_4 == NULL) {
734             assert(ERROR_OCCURRED()); 528             assert(ERROR_OCCURRED());
735 529
738 532
739             exception_lineno = 20; 533             exception_lineno = 20;
740 534
741             goto frame_exception_exit_1; 535             goto frame_exception_exit_1;
742         } 536         }
n 743         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 537         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_4);
744     } 538     }
745     { 539     {
746         PyObject *tmp_outline_return_value_1; 540         PyObject *tmp_outline_return_value_1;
747         { 541         {
748             PyObject *tmp_assign_source_5; 542             PyObject *tmp_assign_source_5;
836         { 630         {
837             PyObject *tmp_eval_source_1; 631             PyObject *tmp_eval_source_1;
838             PyObject *tmp_eval_globals_1; 632             PyObject *tmp_eval_globals_1;
839             PyObject *tmp_eval_locals_1; 633             PyObject *tmp_eval_locals_1;
840             PyObject *tmp_eval_compiled_1; 634             PyObject *tmp_eval_compiled_1;
n 841             tmp_eval_source_1 = mod_consts[10]; n 635             tmp_eval_source_1 = mod_consts[6];
842             CHECK_OBJECT(tmp_exec_call_1__globals); 636             CHECK_OBJECT(tmp_exec_call_1__globals);
843             tmp_eval_globals_1 = tmp_exec_call_1__globals; 637             tmp_eval_globals_1 = tmp_exec_call_1__globals;
844             CHECK_OBJECT(tmp_exec_call_1__locals); 638             CHECK_OBJECT(tmp_exec_call_1__locals);
845             tmp_eval_locals_1 = tmp_exec_call_1__locals; 639             tmp_eval_locals_1 = tmp_exec_call_1__locals;
n 846             tmp_eval_compiled_1 = COMPILE_CODE(tmp_eval_source_1, mod_consts[11], mod_consts[12], NULL, NULL, NULL); n 640             tmp_eval_compiled_1 = COMPILE_CODE(tmp_eval_source_1, mod_consts[7], mod_consts[8], NULL, NULL, NULL);
847             if (tmp_eval_compiled_1 == NULL) { 641             if (tmp_eval_compiled_1 == NULL) {
848                 assert(ERROR_OCCURRED()); 642                 assert(ERROR_OCCURRED());
849 643
850                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 644                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
851 645
913         PyObject *tmp_assign_source_9; 707         PyObject *tmp_assign_source_9;
914 708
915 709
916         tmp_assign_source_9 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 710         tmp_assign_source_9 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
917 711
n 918         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_9); n 712         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_9);
919     } 713     }
920     { 714     {
921         PyObject *tmp_assign_source_10; 715         PyObject *tmp_assign_source_10;
922         PyObject *tmp_name_name_1; 716         PyObject *tmp_name_name_1;
923         PyObject *tmp_globals_name_1; 717         PyObject *tmp_globals_name_1;
924         PyObject *tmp_locals_name_1; 718         PyObject *tmp_locals_name_1;
925         PyObject *tmp_fromlist_name_1; 719         PyObject *tmp_fromlist_name_1;
926         PyObject *tmp_level_name_1; 720         PyObject *tmp_level_name_1;
n 927         tmp_name_name_1 = mod_consts[14]; n 721         tmp_name_name_1 = mod_consts[10];
928         tmp_globals_name_1 = (PyObject *)moduledict___main__; 722         tmp_globals_name_1 = (PyObject *)moduledict___main__;
929         tmp_locals_name_1 = Py_None; 723         tmp_locals_name_1 = Py_None;
930         tmp_fromlist_name_1 = Py_None; 724         tmp_fromlist_name_1 = Py_None;
n 931         tmp_level_name_1 = mod_consts[9]; n 725         tmp_level_name_1 = mod_consts[5];
932         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 38; 726         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 38;
933         tmp_assign_source_10 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1); 727         tmp_assign_source_10 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1);
934         assert(!(tmp_assign_source_10 == NULL)); 728         assert(!(tmp_assign_source_10 == NULL));
n 935         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_10); n 729         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_10);
936     } 730     }
937     { 731     {
938         PyObject *tmp_assign_source_11; 732         PyObject *tmp_assign_source_11;
939         PyObject *tmp_iter_arg_1; 733         PyObject *tmp_iter_arg_1;
940         PyObject *tmp_called_instance_1; 734         PyObject *tmp_called_instance_1;
n 941         tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[14]); n 735         tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[10]);
942         assert(!(tmp_called_instance_1 == NULL)); 736         assert(!(tmp_called_instance_1 == NULL));
943         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 39; 737         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 39;
n 944         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[15], &PyTuple_GET_ITEM(mod_consts[16], 0)); n 738         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[11], &PyTuple_GET_ITEM(mod_consts[12], 0));
945 739
946         if (tmp_iter_arg_1 == NULL) { 740         if (tmp_iter_arg_1 == NULL) {
947             assert(ERROR_OCCURRED()); 741             assert(ERROR_OCCURRED());
948 742
949             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 743             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
998     } 792     }
999     { 793     {
1000         PyObject *tmp_assign_source_13; 794         PyObject *tmp_assign_source_13;
1001         CHECK_OBJECT(tmp_for_loop_1__iter_value); 795         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1002         tmp_assign_source_13 = tmp_for_loop_1__iter_value; 796         tmp_assign_source_13 = tmp_for_loop_1__iter_value;
n 1003         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[17], tmp_assign_source_13); n 797         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_13);
1004     } 798     }
1005     { 799     {
1006         PyObject *tmp_called_name_1; 800         PyObject *tmp_called_name_1;
1007         PyObject *tmp_call_result_1; 801         PyObject *tmp_call_result_1;
n 1008         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[13]); n 802         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[9]);
1009         if (tmp_called_name_1 == NULL) { 803         if (tmp_called_name_1 == NULL) {
1010             assert(ERROR_OCCURRED()); 804             assert(ERROR_OCCURRED());
1011 805
1012             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 806             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1013 807
1074     Py_DECREF(tmp_for_loop_1__for_iterator); 868     Py_DECREF(tmp_for_loop_1__for_iterator);
1075     tmp_for_loop_1__for_iterator = NULL; 869     tmp_for_loop_1__for_iterator = NULL;
1076     { 870     {
1077         PyObject *tmp_called_name_2; 871         PyObject *tmp_called_name_2;
1078         PyObject *tmp_call_result_2; 872         PyObject *tmp_call_result_2;
n 1079         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[18]); n 873         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[14]);
1080         assert(tmp_called_name_2 != NULL); 874         assert(tmp_called_name_2 != NULL);
1081         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 42; 875         frame_116f29906036c44922c76936a8aa7a7d->m_frame.f_lineno = 42;
t 1082         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[19]); t 876         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[15]);
1083         if (tmp_call_result_2 == NULL) { 877         if (tmp_call_result_2 == NULL) {
1084             assert(ERROR_OCCURRED()); 878             assert(ERROR_OCCURRED());
1085 879
1086             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 880             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1087 881