Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)18398611588.11538461538461257.0CPython 2.748607393240.03846153846155438.8298351251628Nuitka (master)50357391391.96153846153845436.4793782504896Nuitka (develop)50357391543.8846153846154436.4793782504896Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)18651263988.11538461538461257.0CPython 3.552615427240.03846153846155434.4038543431241Nuitka (master)55515599391.96153846153845430.56134199075336Nuitka (develop)55515599543.8846153846154430.56134199075336Nuitka (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_12d7eeb3d9944e5fcd16ef40a4371a5b; 61 static PyCodeObject *codeobj_12d7eeb3d9944e5fcd16ef40a4371a5b;
n 62 static PyCodeObject *codeobj_67aed26f2066a37a9548918a00f0338d; n 62 static PyCodeObject *codeobj_7e1215db7ea48658e0e558ff8aab285c;
63 static PyCodeObject *codeobj_c1f0a8f1b8e516228856137613e9b9ac; 63 static PyCodeObject *codeobj_c1f0a8f1b8e516228856137613e9b9ac;
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_12d7eeb3d9944e5fcd16ef40a4371a5b = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[17], mod_consts[18], 0, 0, 0); 69     codeobj_12d7eeb3d9944e5fcd16ef40a4371a5b = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[14], mod_consts[15], 0, 0, 0);
70     codeobj_67aed26f2066a37a9548918a00f0338d = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[10], mod_consts[18], 0, 0, 0); 70     codeobj_7e1215db7ea48658e0e558ff8aab285c = MAKE_CODEOBJECT(module_filename_obj, 25, CO_NOFREE, mod_consts[7], mod_consts[15], 0, 0, 0);
71     codeobj_c1f0a8f1b8e516228856137613e9b9ac = MAKE_CODEOBJECT(module_filename_obj, 22, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[0], mod_consts[19], 6, 0, 0); 71     codeobj_c1f0a8f1b8e516228856137613e9b9ac = 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
144    assert(had_error || !ERROR_OCCURRED()); 144    assert(had_error || !ERROR_OCCURRED());
145    return tmp_return_value; 145    return tmp_return_value;
146 } 146 }
147 147
148 148
n 149 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
150     // Preserve error status for checks
151 #ifndef __NUITKA_NO_ASSERT__
152     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
153 #endif
154  
155     // Local variable declarations.
156     struct Nuitka_FrameObject *frame_67aed26f2066a37a9548918a00f0338d;
157     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
158     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
159     PyObject *exception_type = NULL;
160     PyObject *exception_value = NULL;
161     PyTracebackObject *exception_tb = NULL;
162     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
163     static struct Nuitka_FrameObject *cache_frame_67aed26f2066a37a9548918a00f0338d = NULL;
164     PyObject *tmp_return_value = NULL;
165  
166     // Actual function body.
167     if (isFrameUnusable(cache_frame_67aed26f2066a37a9548918a00f0338d)) {
168         Py_XDECREF(cache_frame_67aed26f2066a37a9548918a00f0338d);
169  
170 #if _DEBUG_REFCOUNTS
171         if (cache_frame_67aed26f2066a37a9548918a00f0338d == NULL) {
172             count_active_frame_cache_instances += 1;
173         } else {
174             count_released_frame_cache_instances += 1;
175         }
176         count_allocated_frame_cache_instances += 1;
177 #endif
178         cache_frame_67aed26f2066a37a9548918a00f0338d = MAKE_FUNCTION_FRAME(codeobj_67aed26f2066a37a9548918a00f0338d, module___main__, 0);
179 #if _DEBUG_REFCOUNTS
180     } else {
181         count_hit_frame_cache_instances += 1;
182 #endif
183     }
184     assert(cache_frame_67aed26f2066a37a9548918a00f0338d->m_type_description == NULL);
185     frame_67aed26f2066a37a9548918a00f0338d = cache_frame_67aed26f2066a37a9548918a00f0338d;
186  
187     // Push the new frame as the currently active one.
188     pushFrameStack(frame_67aed26f2066a37a9548918a00f0338d);
189  
190     // Mark the frame object as in use, ref count 1 will be up for reuse.
191     assert(Py_REFCNT(frame_67aed26f2066a37a9548918a00f0338d) == 2); // Frame stack
192  
193     // Framed code:
194     {
195         PyObject *tmp_called_name_1;
196         PyObject *tmp_call_result_1;
197         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
198         if (tmp_called_name_1 == NULL) {
199             assert(ERROR_OCCURRED());
200  
201             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
202  
203  
204             exception_lineno = 29;
205  
206             goto frame_exception_exit_1;
207         }
208         frame_67aed26f2066a37a9548918a00f0338d->m_frame.f_lineno = 29;
209         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(mod_consts[1], 0));
210  
211         if (tmp_call_result_1 == NULL) {
212             assert(ERROR_OCCURRED());
213  
214             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
215  
216  
217             exception_lineno = 29;
218  
219             goto frame_exception_exit_1;
220         }
221         Py_DECREF(tmp_call_result_1);
222     }
223     {
224         PyObject *tmp_called_name_2;
225         PyObject *tmp_call_result_2;
226         tmp_called_name_2 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
227         if (tmp_called_name_2 == NULL) {
228             assert(ERROR_OCCURRED());
229  
230             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
231  
232  
233             exception_lineno = 30;
234  
235             goto frame_exception_exit_1;
236         }
237         frame_67aed26f2066a37a9548918a00f0338d->m_frame.f_lineno = 30;
238         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(mod_consts[2], 0));
239  
240         if (tmp_call_result_2 == NULL) {
241             assert(ERROR_OCCURRED());
242  
243             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
244  
245  
246             exception_lineno = 30;
247  
248             goto frame_exception_exit_1;
249         }
250         Py_DECREF(tmp_call_result_2);
251     }
252     {
253         PyObject *tmp_called_name_3;
254         PyObject *tmp_call_result_3;
255         tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[0]);
256         if (tmp_called_name_3 == NULL) {
257             assert(ERROR_OCCURRED());
258  
259             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
260  
261  
262             exception_lineno = 31;
263  
264             goto frame_exception_exit_1;
265         }
266         frame_67aed26f2066a37a9548918a00f0338d->m_frame.f_lineno = 31;
267         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(mod_consts[3], 0));
268  
269         if (tmp_call_result_3 == NULL) {
270             assert(ERROR_OCCURRED());
271  
272             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
273  
274  
275             exception_lineno = 31;
276  
277             goto frame_exception_exit_1;
278         }
279         Py_DECREF(tmp_call_result_3);
280     }
281  
282 #if 0
283     RESTORE_FRAME_EXCEPTION(frame_67aed26f2066a37a9548918a00f0338d);
284 #endif
285  
286     // Put the previous frame back on top.
287     popFrameStack();
288  
289     goto frame_no_exception_1;
290  
291     frame_exception_exit_1:;
292  
293 #if 0
294     RESTORE_FRAME_EXCEPTION(frame_67aed26f2066a37a9548918a00f0338d);
295 #endif
296  
297     if (exception_tb == NULL) {
298         exception_tb = MAKE_TRACEBACK(frame_67aed26f2066a37a9548918a00f0338d, exception_lineno);
299     } else if (exception_tb->tb_frame != &frame_67aed26f2066a37a9548918a00f0338d->m_frame) {
300         exception_tb = ADD_TRACEBACK(exception_tb, frame_67aed26f2066a37a9548918a00f0338d, exception_lineno);
301     }
302  
303     // Attaches locals to frame if any.
304     Nuitka_Frame_AttachLocals(
305         frame_67aed26f2066a37a9548918a00f0338d,
306         type_description_1
307     );
308  
309  
310     // Release cached frame.
311     if (frame_67aed26f2066a37a9548918a00f0338d == cache_frame_67aed26f2066a37a9548918a00f0338d) {
312 #if _DEBUG_REFCOUNTS
313         count_active_frame_cache_instances -= 1;
314         count_released_frame_cache_instances += 1;
315 #endif
316  
317         Py_DECREF(frame_67aed26f2066a37a9548918a00f0338d);
318     }
319     cache_frame_67aed26f2066a37a9548918a00f0338d = NULL;
320  
321     assertFrameObject(frame_67aed26f2066a37a9548918a00f0338d);
322  
323     // Put the previous frame back on top.
324     popFrameStack();
325  
326     // Return the error.
327     goto function_exception_exit;
328  
329     frame_no_exception_1:;
330     tmp_return_value = Py_None;
331     Py_INCREF(tmp_return_value);
332     goto function_return_exit;
333  
334     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
335     return NULL;
336  
337 function_exception_exit:
338     assert(exception_type);
339     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
340  
341     return NULL;
342  
343 function_return_exit:
344    // Function cleanup code if any.
345  
346  
347    // Actual function exit with return value, making sure we did not make
348    // the error status worse despite non-NULL return.
349    CHECK_OBJECT(tmp_return_value);
350    assert(had_error || !ERROR_OCCURRED());
351    return tmp_return_value;
352 }
353  
354  
355 149
356 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() { 150 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() {
357     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 151     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
358         impl___main__$$$function_1_compiled_func, 152         impl___main__$$$function_1_compiled_func,
n 359         mod_consts[0], n 153         mod_consts[6],
360 #if PYTHON_VERSION >= 300 154 #if PYTHON_VERSION >= 300
361         NULL, 155         NULL,
362 #endif 156 #endif
363         codeobj_c1f0a8f1b8e516228856137613e9b9ac, 157         codeobj_c1f0a8f1b8e516228856137613e9b9ac,
364         NULL, 158         NULL,
378 172
379 173
380 174
381 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 175 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
382     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 176     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 383         impl___main__$$$function_2_calledRepeatedly, n 177         NULL,
384         mod_consts[10], 178         mod_consts[7],
385 #if PYTHON_VERSION >= 300 179 #if PYTHON_VERSION >= 300
386         NULL, 180         NULL,
387 #endif 181 #endif
n 388         codeobj_67aed26f2066a37a9548918a00f0338d, n 182         codeobj_7e1215db7ea48658e0e558ff8aab285c,
389         NULL, 183         NULL,
390 #if PYTHON_VERSION >= 300 184 #if PYTHON_VERSION >= 300
391         NULL, 185         NULL,
392         NULL, 186         NULL,
393 #endif 187 #endif
414 // Provide a way to create find a function via its C code and create it back 208 // Provide a way to create find a function via its C code and create it back
415 // in another process, useful for multiprocessing extensions like dill 209 // in another process, useful for multiprocessing extensions like dill
416 210
417 function_impl_code functable___main__[] = { 211 function_impl_code functable___main__[] = {
418     impl___main__$$$function_1_compiled_func, 212     impl___main__$$$function_1_compiled_func,
n 419     impl___main__$$$function_2_calledRepeatedly, n 213     NULL,
420     NULL 214     NULL
421 }; 215 };
422 216
423 static char const *_reduce_compiled_function_argnames[] = { 217 static char const *_reduce_compiled_function_argnames[] = {
424     "func", 218     "func",
782 576
783     // Module code. 577     // Module code.
784     { 578     {
785         PyObject *tmp_assign_source_1; 579         PyObject *tmp_assign_source_1;
786         tmp_assign_source_1 = Py_None; 580         tmp_assign_source_1 = Py_None;
n 787         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 581         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_1);
788     } 582     }
789     { 583     {
790         PyObject *tmp_assign_source_2; 584         PyObject *tmp_assign_source_2;
n 791         tmp_assign_source_2 = mod_consts[5]; n 585         tmp_assign_source_2 = mod_consts[1];
792         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 586         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_2);
793     } 587     }
794     { 588     {
795         PyObject *tmp_assign_source_3; 589         PyObject *tmp_assign_source_3;
796         tmp_assign_source_3 = Py_None; 590         tmp_assign_source_3 = Py_None;
n 797         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 591         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_3);
798     } 592     }
799     // Frame without reuse. 593     // Frame without reuse.
800     frame_12d7eeb3d9944e5fcd16ef40a4371a5b = MAKE_MODULE_FRAME(codeobj_12d7eeb3d9944e5fcd16ef40a4371a5b, module___main__); 594     frame_12d7eeb3d9944e5fcd16ef40a4371a5b = MAKE_MODULE_FRAME(codeobj_12d7eeb3d9944e5fcd16ef40a4371a5b, module___main__);
801 595
802     // Push the new frame as the currently active one, and we should be exclusively 596     // Push the new frame as the currently active one, and we should be exclusively
813         assert(!(tmp_import_name_from_1 == NULL)); 607         assert(!(tmp_import_name_from_1 == NULL));
814         if (PyModule_Check(tmp_import_name_from_1)) { 608         if (PyModule_Check(tmp_import_name_from_1)) {
815             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 609             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
816                 tmp_import_name_from_1, 610                 tmp_import_name_from_1,
817                 (PyObject *)moduledict___main__, 611                 (PyObject *)moduledict___main__,
n 818                 mod_consts[8], n 612                 mod_consts[4],
819                 mod_consts[9] 613                 mod_consts[5]
820             ); 614             );
821         } else { 615         } else {
n 822             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[8]); n 616             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[4]);
823         } 617         }
824 618
825         if (tmp_assign_source_4 == NULL) { 619         if (tmp_assign_source_4 == NULL) {
826             assert(ERROR_OCCURRED()); 620             assert(ERROR_OCCURRED());
827 621
830 624
831             exception_lineno = 20; 625             exception_lineno = 20;
832 626
833             goto frame_exception_exit_1; 627             goto frame_exception_exit_1;
834         } 628         }
n 835         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 629         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_4);
836     } 630     }
837     { 631     {
838         PyObject *tmp_assign_source_5; 632         PyObject *tmp_assign_source_5;
839 633
840 634
841         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function_1_compiled_func(); 635         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function_1_compiled_func();
842 636
n 843         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); n 637         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_5);
844     } 638     }
845     { 639     {
846         PyObject *tmp_assign_source_6; 640         PyObject *tmp_assign_source_6;
847 641
848 642
849         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(); 643         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_2_calledRepeatedly();
850 644
n 851         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_6); n 645         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_6);
852     } 646     }
853     { 647     {
854         PyObject *tmp_assign_source_7; 648         PyObject *tmp_assign_source_7;
855         PyObject *tmp_name_name_1; 649         PyObject *tmp_name_name_1;
856         PyObject *tmp_globals_name_1; 650         PyObject *tmp_globals_name_1;
857         PyObject *tmp_locals_name_1; 651         PyObject *tmp_locals_name_1;
858         PyObject *tmp_fromlist_name_1; 652         PyObject *tmp_fromlist_name_1;
859         PyObject *tmp_level_name_1; 653         PyObject *tmp_level_name_1;
n 860         tmp_name_name_1 = mod_consts[11]; n 654         tmp_name_name_1 = mod_consts[8];
861         tmp_globals_name_1 = (PyObject *)moduledict___main__; 655         tmp_globals_name_1 = (PyObject *)moduledict___main__;
862         tmp_locals_name_1 = Py_None; 656         tmp_locals_name_1 = Py_None;
863         tmp_fromlist_name_1 = Py_None; 657         tmp_fromlist_name_1 = Py_None;
n 864         tmp_level_name_1 = mod_consts[9]; n 658         tmp_level_name_1 = mod_consts[5];
865         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 36; 659         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 36;
866         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); 660         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);
867         assert(!(tmp_assign_source_7 == NULL)); 661         assert(!(tmp_assign_source_7 == NULL));
n 868         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_7); n 662         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_7);
869     } 663     }
870     { 664     {
871         PyObject *tmp_assign_source_8; 665         PyObject *tmp_assign_source_8;
872         PyObject *tmp_iter_arg_1; 666         PyObject *tmp_iter_arg_1;
873         PyObject *tmp_called_instance_1; 667         PyObject *tmp_called_instance_1;
n 874         tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[11]); n 668         tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[8]);
875         assert(!(tmp_called_instance_1 == NULL)); 669         assert(!(tmp_called_instance_1 == NULL));
876         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 37; 670         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 37;
n 877         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[12], &PyTuple_GET_ITEM(mod_consts[13], 0)); n 671         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(tmp_called_instance_1, mod_consts[9], &PyTuple_GET_ITEM(mod_consts[10], 0));
878 672
879         if (tmp_iter_arg_1 == NULL) { 673         if (tmp_iter_arg_1 == NULL) {
880             assert(ERROR_OCCURRED()); 674             assert(ERROR_OCCURRED());
881 675
882             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 676             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
931     } 725     }
932     { 726     {
933         PyObject *tmp_assign_source_10; 727         PyObject *tmp_assign_source_10;
934         CHECK_OBJECT(tmp_for_loop_1__iter_value); 728         CHECK_OBJECT(tmp_for_loop_1__iter_value);
935         tmp_assign_source_10 = tmp_for_loop_1__iter_value; 729         tmp_assign_source_10 = tmp_for_loop_1__iter_value;
n 936         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_10); n 730         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_10);
937     } 731     }
938     { 732     {
939         PyObject *tmp_called_name_1; 733         PyObject *tmp_called_name_1;
940         PyObject *tmp_call_result_1; 734         PyObject *tmp_call_result_1;
n 941         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[10]); n 735         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[7]);
942         if (tmp_called_name_1 == NULL) { 736         if (tmp_called_name_1 == NULL) {
943             assert(ERROR_OCCURRED()); 737             assert(ERROR_OCCURRED());
944 738
945             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 739             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
946 740
1007     Py_DECREF(tmp_for_loop_1__for_iterator); 801     Py_DECREF(tmp_for_loop_1__for_iterator);
1008     tmp_for_loop_1__for_iterator = NULL; 802     tmp_for_loop_1__for_iterator = NULL;
1009     { 803     {
1010         PyObject *tmp_called_name_2; 804         PyObject *tmp_called_name_2;
1011         PyObject *tmp_call_result_2; 805         PyObject *tmp_call_result_2;
n 1012         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[15]); n 806         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[12]);
1013         assert(tmp_called_name_2 != NULL); 807         assert(tmp_called_name_2 != NULL);
1014         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 40; 808         frame_12d7eeb3d9944e5fcd16ef40a4371a5b->m_frame.f_lineno = 40;
t 1015         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[16]); t 809         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[13]);
1016         if (tmp_call_result_2 == NULL) { 810         if (tmp_call_result_2 == NULL) {
1017             assert(ERROR_OCCURRED()); 811             assert(ERROR_OCCURRED());
1018 812
1019             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 813             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1020 814