Construct CallCompiledFunctionPosArgsDefaults

Performance Diagrams

Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)19062051788.11538461538461257.0CPython 2.762100307240.03846153846155423.6101929888271Nuitka (master)61900333391.96153846153845423.86943398082946Nuitka (develop)61900257543.8846153846154423.8695325052146Nuitka (factory)Construct CallCompiledFunctionPosArgsDefaultsTicks Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)19804226588.11538461538461257.0CPython 3.572501111240.03846153846155413.64914030229477Nuitka (master)72290575391.96153846153845413.9118452588119Nuitka (develop)72300572543.8846153846154413.8993710907347Nuitka (factory)Construct CallCompiledFunctionPosArgsDefaultsTicks

Source Code with Construct

from __future__ import print_function

def compiled_func(a = 1,b = 2,c = 3,d = 4,e = 5,f = 6):
    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()
    compiled_func()
    compiled_func()
# 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 = 1,b = 2,c = 3,d = 4,e = 5,f = 6):
    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() n
30     compiled_func()
31     compiled_func()
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
37 static PyObject *const_str_plain_f; 37 static PyObject *const_str_plain_f;
38 extern PyObject *const_int_pos_1; 38 extern PyObject *const_int_pos_1;
39 extern PyObject *const_str_plain___file__; 39 extern PyObject *const_str_plain___file__;
40 static PyObject *const_str_digest_02380adc9e6160bdfc0d8e402d79c640; 40 static PyObject *const_str_digest_02380adc9e6160bdfc0d8e402d79c640;
41 extern PyObject *const_int_0; 41 extern PyObject *const_int_0;
n n 42 static PyObject *const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple;
43 static PyObject *const_str_plain_a;
42 static PyObject *const_str_plain_compiled_func; 44 static PyObject *const_str_plain_compiled_func;
n 43 static PyObject *const_str_plain_a; n
44 static PyObject *const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple;
45 extern PyObject *const_str_plain_print; 45 extern PyObject *const_str_plain_print;
46 static PyObject *const_int_pos_50000; 46 static PyObject *const_int_pos_50000;
47 static PyObject *const_int_pos_3; 47 static PyObject *const_int_pos_3;
48 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 48 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
49 static PyObject *const_str_plain_e; 49 static PyObject *const_str_plain_e;
71 static bool constants_created = false; 71 static bool constants_created = false;
72 72
73 /* Function to create module private constants. */ 73 /* Function to create module private constants. */
74 static void createModuleConstants( void ) 74 static void createModuleConstants( void )
75 { 75 {
n 76     const_str_plain_b = UNSTREAM_STRING_ASCII(&constant_bin[ 73 ], 1, 1); n 76     const_str_plain_b = UNSTREAM_STRING_ASCII(&constant_bin[ 38 ], 1, 1);
77     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 74 ], 9, 1); 77     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 39 ], 9, 1);
78     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New(6); 78     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New(6);
79     const_str_plain_a = UNSTREAM_STRING_ASCII(&constant_bin[ 1 ], 1, 1); 79     const_str_plain_a = UNSTREAM_STRING_ASCII(&constant_bin[ 1 ], 1, 1);
80     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a); Py_INCREF(const_str_plain_a); 80     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a); Py_INCREF(const_str_plain_a);
81     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b); Py_INCREF(const_str_plain_b); 81     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b); Py_INCREF(const_str_plain_b);
82     const_str_plain_c = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 1, 1); 82     const_str_plain_c = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 1, 1);
83     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c); Py_INCREF(const_str_plain_c); 83     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c); Py_INCREF(const_str_plain_c);
n 84     const_str_plain_d = UNSTREAM_STRING_ASCII(&constant_bin[ 13 ], 1, 1); n 84     const_str_plain_d = UNSTREAM_STRING_ASCII(&constant_bin[ 11 ], 1, 1);
85     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d); Py_INCREF(const_str_plain_d); 85     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d); Py_INCREF(const_str_plain_d);
86     const_str_plain_e = UNSTREAM_STRING_ASCII(&constant_bin[ 3 ], 1, 1); 86     const_str_plain_e = UNSTREAM_STRING_ASCII(&constant_bin[ 3 ], 1, 1);
87     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e); Py_INCREF(const_str_plain_e); 87     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e); Py_INCREF(const_str_plain_e);
n 88     const_str_plain_f = UNSTREAM_STRING_ASCII(&constant_bin[ 15 ], 1, 1); n 88     const_str_plain_f = UNSTREAM_STRING_ASCII(&constant_bin[ 33 ], 1, 1);
89     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f); Py_INCREF(const_str_plain_f); 89     PyTuple_SET_ITEM(const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f); Py_INCREF(const_str_plain_f);
n 90     const_str_digest_02380adc9e6160bdfc0d8e402d79c640 = UNSTREAM_STRING_ASCII(&constant_bin[ 83 ], 60, 0); n 90     const_str_digest_02380adc9e6160bdfc0d8e402d79c640 = UNSTREAM_STRING_ASCII(&constant_bin[ 48 ], 60, 0);
91     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 13, 1);
92     const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple = PyTuple_New(6); 91     const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple = PyTuple_New(6);
93     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 0, const_int_pos_1); Py_INCREF(const_int_pos_1); 92     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 0, const_int_pos_1); Py_INCREF(const_int_pos_1);
94     const_int_pos_2 = PyLong_FromUnsignedLong(2ul); 93     const_int_pos_2 = PyLong_FromUnsignedLong(2ul);
95     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 1, const_int_pos_2); Py_INCREF(const_int_pos_2); 94     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 1, const_int_pos_2); Py_INCREF(const_int_pos_2);
96     const_int_pos_3 = PyLong_FromUnsignedLong(3ul); 95     const_int_pos_3 = PyLong_FromUnsignedLong(3ul);
99     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 3, const_int_pos_4); Py_INCREF(const_int_pos_4); 98     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 3, const_int_pos_4); Py_INCREF(const_int_pos_4);
100     const_int_pos_5 = PyLong_FromUnsignedLong(5ul); 99     const_int_pos_5 = PyLong_FromUnsignedLong(5ul);
101     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 4, const_int_pos_5); Py_INCREF(const_int_pos_5); 100     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 4, const_int_pos_5); Py_INCREF(const_int_pos_5);
102     const_int_pos_6 = PyLong_FromUnsignedLong(6ul); 101     const_int_pos_6 = PyLong_FromUnsignedLong(6ul);
103     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 5, const_int_pos_6); Py_INCREF(const_int_pos_6); 102     PyTuple_SET_ITEM(const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 5, const_int_pos_6); Py_INCREF(const_int_pos_6);
n n 103     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII(&constant_bin[ 108 ], 13, 1);
104     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 104     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
105     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1); 105     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1);
n 106     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 143 ], 3, 0); n 106     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 121 ], 3, 0);
107     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352); 107     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352);
n 108     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 41 ], 16, 1); n 108     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 16, 1);
109     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 146 ], 8, 0); 109     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 124 ], 8, 0);
110     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 154 ], 4, 1); 110     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 132 ], 4, 1);
111     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 158 ], 1, 1); 111     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 136 ], 1, 1);
112     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 159 ], 6, 1); 112     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 137 ], 6, 1);
113     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 113     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
114     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 114     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
115     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 115     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
n 116     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 165 ], 14, 1); n 116     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 143 ], 14, 1);
117     const_str_plain___debug__ = UNSTREAM_STRING_ASCII(&constant_bin[ 179 ], 9, 1); 117     const_str_plain___debug__ = UNSTREAM_STRING_ASCII(&constant_bin[ 157 ], 9, 1);
118 118
119     constants_created = true; 119     constants_created = true;
120 } 120 }
121 121
122 /* Function to verify module private constants for non-corruption. */ 122 /* Function to verify module private constants for non-corruption. */
130 } 130 }
131 #endif 131 #endif
132 132
133 // The module code objects. 133 // The module code objects.
134 static PyCodeObject *codeobj_e06f0e2f0a8932b722e7c0715119122a; 134 static PyCodeObject *codeobj_e06f0e2f0a8932b722e7c0715119122a;
n 135 static PyCodeObject *codeobj_6798556d0f378985cfd5c44efd7161b7; n 135 static PyCodeObject *codeobj_15e50755788b8b2c98489d6450b9f8e1;
136 static PyCodeObject *codeobj_0e5785ffbe494f8b4a90b1be165ffebc; 136 static PyCodeObject *codeobj_0e5785ffbe494f8b4a90b1be165ffebc;
137 /* For use in "MainProgram.c". */ 137 /* For use in "MainProgram.c". */
138 PyCodeObject *codeobj_main = NULL; 138 PyCodeObject *codeobj_main = NULL;
139 139
140 static void createModuleCodeObjects(void) 140 static void createModuleCodeObjects(void)
141 { 141 {
142     module_filename_obj = const_str_digest_02380adc9e6160bdfc0d8e402d79c640; 142     module_filename_obj = const_str_digest_02380adc9e6160bdfc0d8e402d79c640;
143     codeobj_e06f0e2f0a8932b722e7c0715119122a = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE); 143     codeobj_e06f0e2f0a8932b722e7c0715119122a = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE);
n 144     codeobj_6798556d0f378985cfd5c44efd7161b7 = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE); n 144     codeobj_15e50755788b8b2c98489d6450b9f8e1 = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE);
145     codeobj_0e5785ffbe494f8b4a90b1be165ffebc = MAKE_CODEOBJ(module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE); 145     codeobj_0e5785ffbe494f8b4a90b1be165ffebc = MAKE_CODEOBJ(module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE);
146 } 146 }
147 147
148 // The module function declarations. 148 // The module function declarations.
149 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(PyObject *defaults); 149 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(PyObject *defaults);
225    assert(had_error || !ERROR_OCCURRED()); 225    assert(had_error || !ERROR_OCCURRED());
226    return tmp_return_value; 226    return tmp_return_value;
227 } 227 }
228 228
229 229
n 230 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
231     // Preserve error status for checks
232 #ifndef __NUITKA_NO_ASSERT__
233     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
234 #endif
235  
236     // Local variable declarations.
237     struct Nuitka_FrameObject *frame_6798556d0f378985cfd5c44efd7161b7;
238     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
239     PyObject *exception_type = NULL;
240     PyObject *exception_value = NULL;
241     PyTracebackObject *exception_tb = NULL;
242     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
243     static struct Nuitka_FrameObject *cache_frame_6798556d0f378985cfd5c44efd7161b7 = NULL;
244     PyObject *tmp_return_value = NULL;
245  
246     // Actual function body.
247     MAKE_OR_REUSE_FRAME(cache_frame_6798556d0f378985cfd5c44efd7161b7, codeobj_6798556d0f378985cfd5c44efd7161b7, module___main__, 0);
248     frame_6798556d0f378985cfd5c44efd7161b7 = cache_frame_6798556d0f378985cfd5c44efd7161b7;
249  
250     // Push the new frame as the currently active one.
251     pushFrameStack(frame_6798556d0f378985cfd5c44efd7161b7);
252  
253     // Mark the frame object as in use, ref count 1 will be up for reuse.
254     assert(Py_REFCNT(frame_6798556d0f378985cfd5c44efd7161b7) == 2); // Frame stack
255  
256     // Framed code:
257     {
258         PyObject *tmp_called_name_1;
259         PyObject *tmp_mvar_value_1;
260         PyObject *tmp_call_result_1;
261         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
262  
263         if (unlikely(tmp_mvar_value_1 == NULL)) {
264             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
265         }
266  
267         if (tmp_mvar_value_1 == NULL) {
268  
269             exception_type = PyExc_NameError;
270             Py_INCREF(exception_type);
271             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
272             exception_tb = NULL;
273             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
274             CHAIN_EXCEPTION(exception_value);
275  
276             exception_lineno = 29;
277  
278             goto frame_exception_exit_1;
279         }
280  
281         tmp_called_name_1 = tmp_mvar_value_1;
282         frame_6798556d0f378985cfd5c44efd7161b7->m_frame.f_lineno = 29;
283         tmp_call_result_1 = CALL_FUNCTION_NO_ARGS(tmp_called_name_1);
284         if (tmp_call_result_1 == NULL) {
285             assert(ERROR_OCCURRED());
286  
287             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
288  
289  
290             exception_lineno = 29;
291  
292             goto frame_exception_exit_1;
293         }
294         Py_DECREF(tmp_call_result_1);
295     }
296     {
297         PyObject *tmp_called_name_2;
298         PyObject *tmp_mvar_value_2;
299         PyObject *tmp_call_result_2;
300         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
301  
302         if (unlikely(tmp_mvar_value_2 == NULL)) {
303             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
304         }
305  
306         if (tmp_mvar_value_2 == NULL) {
307  
308             exception_type = PyExc_NameError;
309             Py_INCREF(exception_type);
310             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
311             exception_tb = NULL;
312             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
313             CHAIN_EXCEPTION(exception_value);
314  
315             exception_lineno = 30;
316  
317             goto frame_exception_exit_1;
318         }
319  
320         tmp_called_name_2 = tmp_mvar_value_2;
321         frame_6798556d0f378985cfd5c44efd7161b7->m_frame.f_lineno = 30;
322         tmp_call_result_2 = CALL_FUNCTION_NO_ARGS(tmp_called_name_2);
323         if (tmp_call_result_2 == NULL) {
324             assert(ERROR_OCCURRED());
325  
326             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
327  
328  
329             exception_lineno = 30;
330  
331             goto frame_exception_exit_1;
332         }
333         Py_DECREF(tmp_call_result_2);
334     }
335     {
336         PyObject *tmp_called_name_3;
337         PyObject *tmp_mvar_value_3;
338         PyObject *tmp_call_result_3;
339         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
340  
341         if (unlikely(tmp_mvar_value_3 == NULL)) {
342             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
343         }
344  
345         if (tmp_mvar_value_3 == NULL) {
346  
347             exception_type = PyExc_NameError;
348             Py_INCREF(exception_type);
349             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
350             exception_tb = NULL;
351             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
352             CHAIN_EXCEPTION(exception_value);
353  
354             exception_lineno = 31;
355  
356             goto frame_exception_exit_1;
357         }
358  
359         tmp_called_name_3 = tmp_mvar_value_3;
360         frame_6798556d0f378985cfd5c44efd7161b7->m_frame.f_lineno = 31;
361         tmp_call_result_3 = CALL_FUNCTION_NO_ARGS(tmp_called_name_3);
362         if (tmp_call_result_3 == NULL) {
363             assert(ERROR_OCCURRED());
364  
365             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
366  
367  
368             exception_lineno = 31;
369  
370             goto frame_exception_exit_1;
371         }
372         Py_DECREF(tmp_call_result_3);
373     }
374  
375 #if 0
376     RESTORE_FRAME_EXCEPTION(frame_6798556d0f378985cfd5c44efd7161b7);
377 #endif
378  
379     // Put the previous frame back on top.
380     popFrameStack();
381  
382     goto frame_no_exception_1;
383  
384     frame_exception_exit_1:;
385  
386 #if 0
387     RESTORE_FRAME_EXCEPTION(frame_6798556d0f378985cfd5c44efd7161b7);
388 #endif
389  
390     if (exception_tb == NULL) {
391         exception_tb = MAKE_TRACEBACK(frame_6798556d0f378985cfd5c44efd7161b7, exception_lineno);
392     }
393     else if (exception_tb->tb_frame != &frame_6798556d0f378985cfd5c44efd7161b7->m_frame) {
394         exception_tb = ADD_TRACEBACK(exception_tb, frame_6798556d0f378985cfd5c44efd7161b7, exception_lineno);
395     }
396  
397     // Attachs locals to frame if any.
398     Nuitka_Frame_AttachLocals(
399         (struct Nuitka_FrameObject *)frame_6798556d0f378985cfd5c44efd7161b7,
400         type_description_1
401     );
402  
403  
404     // Release cached frame.
405     if (frame_6798556d0f378985cfd5c44efd7161b7 == cache_frame_6798556d0f378985cfd5c44efd7161b7) {
406         Py_DECREF(frame_6798556d0f378985cfd5c44efd7161b7);
407     }
408     cache_frame_6798556d0f378985cfd5c44efd7161b7 = NULL;
409  
410     assertFrameObject(frame_6798556d0f378985cfd5c44efd7161b7);
411  
412     // Put the previous frame back on top.
413     popFrameStack();
414  
415     // Return the error.
416     goto function_exception_exit;
417  
418     frame_no_exception_1:;
419     tmp_return_value = Py_None;
420     Py_INCREF(tmp_return_value);
421     goto function_return_exit;
422  
423     // Return statement must have exited already.
424     NUITKA_CANNOT_GET_HERE(__main__$$$function_2_calledRepeatedly);
425     return NULL;
426  
427 function_exception_exit:
428     assert(exception_type);
429     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
430  
431     return NULL;
432  
433 function_return_exit:
434    // Function cleanup code if any.
435  
436  
437    // Actual function exit with return value, making sure we did not make
438    // the error status worse despite non-NULL return.
439    CHECK_OBJECT(tmp_return_value);
440    assert(had_error || !ERROR_OCCURRED());
441    return tmp_return_value;
442 }
443  
444  
445 230
446 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(PyObject *defaults) { 231 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(PyObject *defaults) {
447     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 232     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
448         impl___main__$$$function_1_compiled_func, 233         impl___main__$$$function_1_compiled_func,
449         const_str_plain_compiled_func, 234         const_str_plain_compiled_func,
466 251
467 252
468 253
469 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 254 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
470     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 255     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 471         impl___main__$$$function_2_calledRepeatedly, n 256         NULL,
472         const_str_plain_calledRepeatedly, 257         const_str_plain_calledRepeatedly,
473 #if PYTHON_VERSION >= 300 258 #if PYTHON_VERSION >= 300
474         NULL, 259         NULL,
475 #endif 260 #endif
n 476         codeobj_6798556d0f378985cfd5c44efd7161b7, n 261         codeobj_15e50755788b8b2c98489d6450b9f8e1,
477         NULL, 262         NULL,
478 #if PYTHON_VERSION >= 300 263 #if PYTHON_VERSION >= 300
479         NULL, 264         NULL,
480         NULL, 265         NULL,
481 #endif 266 #endif
942 727
943         if (tmp_mvar_value_2 == NULL) { 728         if (tmp_mvar_value_2 == NULL) {
944 729
945             exception_type = PyExc_NameError; 730             exception_type = PyExc_NameError;
946             Py_INCREF(exception_type); 731             Py_INCREF(exception_type);
t 947             exception_value = UNSTREAM_STRING(&constant_bin[ 35 ], 38, 0); t 732             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 38, 0);
948             exception_tb = NULL; 733             exception_tb = NULL;
949             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 734             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
950             CHAIN_EXCEPTION(exception_value); 735             CHAIN_EXCEPTION(exception_value);
951 736
952             exception_lineno = 38; 737             exception_lineno = 38;