Construct CallCompiledFunctionPosArgsDefaults

Performance Diagrams

Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)19062051788.11538461538461257.0CPython 2.762100271240.03846153846155423.6102396582727Nuitka (master)61900346391.96153846153845423.8694171279741Nuitka (develop)61900334543.8846153846154423.869432684456Nuitka (factory)Construct CallCompiledFunctionPosArgsDefaultsTicks Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)19804226588.11538461538461257.0CPython 3.572501381240.03846153846155413.6488033986856Nuitka (master)72290904391.96153846153845413.9114347355252Nuitka (develop)72291618543.8846153846154413.9105438126476Nuitka (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 extern PyObject *const_int_0; 40 extern PyObject *const_int_0;
41 static PyObject *const_str_digest_f6b34b82169d3101460b461e2a426ab2; 41 static PyObject *const_str_digest_f6b34b82169d3101460b461e2a426ab2;
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_f6b34b82169d3101460b461e2a426ab2 = UNSTREAM_STRING_ASCII( &constant_bin[ 83 ], 60, 0 ); n 90     const_str_digest_f6b34b82169d3101460b461e2a426ab2 = 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[ 103 ], 1, 1 ); 111     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 68 ], 1, 1 );
112     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 158 ], 6, 1 ); 112     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 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[ 164 ], 14, 1 ); n 116     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 142 ], 14, 1 );
117     const_str_plain___debug__ = UNSTREAM_STRING_ASCII( &constant_bin[ 178 ], 9, 1 ); 117     const_str_plain___debug__ = UNSTREAM_STRING_ASCII( &constant_bin[ 156 ], 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_ceafdd205904bf965c8ce02e07478631; 134 static PyCodeObject *codeobj_ceafdd205904bf965c8ce02e07478631;
n 135 static PyCodeObject *codeobj_6542a65a0a7729a1524e3bedcf1ba72e; n 135 static PyCodeObject *codeobj_59e63706c33bf4692c84b6e1ac1f6161;
136 static PyCodeObject *codeobj_bcccdd0c3bef531a532fa1f1611a4d33; 136 static PyCodeObject *codeobj_bcccdd0c3bef531a532fa1f1611a4d33;
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_f6b34b82169d3101460b461e2a426ab2; 142     module_filename_obj = const_str_digest_f6b34b82169d3101460b461e2a426ab2;
143     codeobj_ceafdd205904bf965c8ce02e07478631 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 143     codeobj_ceafdd205904bf965c8ce02e07478631 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
n 144     codeobj_6542a65a0a7729a1524e3bedcf1ba72e = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 144     codeobj_59e63706c33bf4692c84b6e1ac1f6161 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
145     codeobj_bcccdd0c3bef531a532fa1f1611a4d33 = 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_bcccdd0c3bef531a532fa1f1611a4d33 = 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 );
226    assert(had_error || !ERROR_OCCURRED()); 226    assert(had_error || !ERROR_OCCURRED());
227    return tmp_return_value; 227    return tmp_return_value;
228 } 228 }
229 229
230 230
n 231 static PyObject *impl___main__$$$function_2_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
232 {
233     // Preserve error status for checks
234 #ifndef __NUITKA_NO_ASSERT__
235     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
236 #endif
237  
238     // Local variable declarations.
239     struct Nuitka_FrameObject *frame_6542a65a0a7729a1524e3bedcf1ba72e;
240     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
241     PyObject *exception_type = NULL;
242     PyObject *exception_value = NULL;
243     PyTracebackObject *exception_tb = NULL;
244     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
245     static struct Nuitka_FrameObject *cache_frame_6542a65a0a7729a1524e3bedcf1ba72e = NULL;
246     PyObject *tmp_return_value = NULL;
247  
248     // Actual function body.
249     MAKE_OR_REUSE_FRAME(cache_frame_6542a65a0a7729a1524e3bedcf1ba72e, codeobj_6542a65a0a7729a1524e3bedcf1ba72e, module___main__, 0);
250     frame_6542a65a0a7729a1524e3bedcf1ba72e = cache_frame_6542a65a0a7729a1524e3bedcf1ba72e;
251  
252     // Push the new frame as the currently active one.
253     pushFrameStack(frame_6542a65a0a7729a1524e3bedcf1ba72e);
254  
255     // Mark the frame object as in use, ref count 1 will be up for reuse.
256     assert(Py_REFCNT(frame_6542a65a0a7729a1524e3bedcf1ba72e) == 2); // Frame stack
257  
258     // Framed code:
259     {
260         PyObject *tmp_called_name_1;
261         PyObject *tmp_mvar_value_1;
262         PyObject *tmp_call_result_1;
263         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
264  
265         if (unlikely( tmp_mvar_value_1 == NULL )) {
266             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
267         }
268  
269         if ( tmp_mvar_value_1 == NULL )
270         {
271  
272             exception_type = PyExc_NameError;
273             Py_INCREF(exception_type);
274             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
275             exception_tb = NULL;
276             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
277             CHAIN_EXCEPTION( exception_value );
278  
279             exception_lineno = 29;
280  
281             goto frame_exception_exit_1;
282         }
283  
284         tmp_called_name_1 = tmp_mvar_value_1;
285         frame_6542a65a0a7729a1524e3bedcf1ba72e->m_frame.f_lineno = 29;
286         tmp_call_result_1 = CALL_FUNCTION_NO_ARGS( tmp_called_name_1 );
287         if ( tmp_call_result_1 == NULL )
288         {
289             assert(ERROR_OCCURRED());
290  
291             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
292  
293  
294             exception_lineno = 29;
295  
296             goto frame_exception_exit_1;
297         }
298         Py_DECREF(tmp_call_result_1);
299     }
300     {
301         PyObject *tmp_called_name_2;
302         PyObject *tmp_mvar_value_2;
303         PyObject *tmp_call_result_2;
304         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
305  
306         if (unlikely( tmp_mvar_value_2 == NULL )) {
307             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
308         }
309  
310         if ( tmp_mvar_value_2 == NULL )
311         {
312  
313             exception_type = PyExc_NameError;
314             Py_INCREF(exception_type);
315             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
316             exception_tb = NULL;
317             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
318             CHAIN_EXCEPTION( exception_value );
319  
320             exception_lineno = 30;
321  
322             goto frame_exception_exit_1;
323         }
324  
325         tmp_called_name_2 = tmp_mvar_value_2;
326         frame_6542a65a0a7729a1524e3bedcf1ba72e->m_frame.f_lineno = 30;
327         tmp_call_result_2 = CALL_FUNCTION_NO_ARGS( tmp_called_name_2 );
328         if ( tmp_call_result_2 == NULL )
329         {
330             assert(ERROR_OCCURRED());
331  
332             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
333  
334  
335             exception_lineno = 30;
336  
337             goto frame_exception_exit_1;
338         }
339         Py_DECREF(tmp_call_result_2);
340     }
341     {
342         PyObject *tmp_called_name_3;
343         PyObject *tmp_mvar_value_3;
344         PyObject *tmp_call_result_3;
345         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
346  
347         if (unlikely( tmp_mvar_value_3 == NULL )) {
348             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
349         }
350  
351         if ( tmp_mvar_value_3 == NULL )
352         {
353  
354             exception_type = PyExc_NameError;
355             Py_INCREF(exception_type);
356             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
357             exception_tb = NULL;
358             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
359             CHAIN_EXCEPTION( exception_value );
360  
361             exception_lineno = 31;
362  
363             goto frame_exception_exit_1;
364         }
365  
366         tmp_called_name_3 = tmp_mvar_value_3;
367         frame_6542a65a0a7729a1524e3bedcf1ba72e->m_frame.f_lineno = 31;
368         tmp_call_result_3 = CALL_FUNCTION_NO_ARGS( tmp_called_name_3 );
369         if ( tmp_call_result_3 == NULL )
370         {
371             assert(ERROR_OCCURRED());
372  
373             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
374  
375  
376             exception_lineno = 31;
377  
378             goto frame_exception_exit_1;
379         }
380         Py_DECREF(tmp_call_result_3);
381     }
382  
383 #if 0
384     RESTORE_FRAME_EXCEPTION(frame_6542a65a0a7729a1524e3bedcf1ba72e);
385 #endif
386  
387     // Put the previous frame back on top.
388     popFrameStack();
389  
390     goto frame_no_exception_1;
391  
392     frame_exception_exit_1:;
393  
394 #if 0
395     RESTORE_FRAME_EXCEPTION(frame_6542a65a0a7729a1524e3bedcf1ba72e);
396 #endif
397  
398     if (exception_tb == NULL) {
399         exception_tb = MAKE_TRACEBACK( frame_6542a65a0a7729a1524e3bedcf1ba72e, exception_lineno );
400     }
401     else if (exception_tb->tb_frame != &frame_6542a65a0a7729a1524e3bedcf1ba72e->m_frame) {
402         exception_tb = ADD_TRACEBACK(exception_tb, frame_6542a65a0a7729a1524e3bedcf1ba72e, exception_lineno);
403     }
404  
405     // Attachs locals to frame if any.
406     Nuitka_Frame_AttachLocals(
407         (struct Nuitka_FrameObject *)frame_6542a65a0a7729a1524e3bedcf1ba72e,
408         type_description_1
409     );
410  
411  
412     // Release cached frame.
413     if (frame_6542a65a0a7729a1524e3bedcf1ba72e == cache_frame_6542a65a0a7729a1524e3bedcf1ba72e) {
414         Py_DECREF(frame_6542a65a0a7729a1524e3bedcf1ba72e);
415     }
416     cache_frame_6542a65a0a7729a1524e3bedcf1ba72e = NULL;
417  
418     assertFrameObject(frame_6542a65a0a7729a1524e3bedcf1ba72e);
419  
420     // Put the previous frame back on top.
421     popFrameStack();
422  
423     // Return the error.
424     goto function_exception_exit;
425  
426     frame_no_exception_1:;
427     tmp_return_value = Py_None;
428     Py_INCREF(tmp_return_value);
429     goto function_return_exit;
430  
431     // Return statement must have exited already.
432     NUITKA_CANNOT_GET_HERE(__main__$$$function_2_calledRepeatedly);
433     return NULL;
434  
435 function_exception_exit:
436     assert(exception_type);
437     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
438  
439     return NULL;
440  
441 function_return_exit:
442    // Function cleanup code if any.
443  
444  
445    // Actual function exit with return value, making sure we did not make
446    // the error status worse despite non-NULL return.
447    CHECK_OBJECT(tmp_return_value);
448    assert(had_error || !ERROR_OCCURRED());
449    return tmp_return_value;
450 }
451  
452  
453 231
454 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func( PyObject *defaults ) 232 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func( PyObject *defaults )
455 { 233 {
456     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 234     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
457         impl___main__$$$function_1_compiled_func, 235         impl___main__$$$function_1_compiled_func,
476 254
477 255
478 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(  ) 256 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(  )
479 { 257 {
480     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 258     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 481         impl___main__$$$function_2_calledRepeatedly, n 259         NULL,
482         const_str_plain_calledRepeatedly, 260         const_str_plain_calledRepeatedly,
483 #if PYTHON_VERSION >= 300 261 #if PYTHON_VERSION >= 300
484         NULL, 262         NULL,
485 #endif 263 #endif
n 486         codeobj_6542a65a0a7729a1524e3bedcf1ba72e, n 264         codeobj_59e63706c33bf4692c84b6e1ac1f6161,
487         NULL, 265         NULL,
488 #if PYTHON_VERSION >= 300 266 #if PYTHON_VERSION >= 300
489         NULL, 267         NULL,
490         NULL, 268         NULL,
491 #endif 269 #endif
956         if ( tmp_mvar_value_2 == NULL ) 734         if ( tmp_mvar_value_2 == NULL )
957         { 735         {
958 736
959             exception_type = PyExc_NameError; 737             exception_type = PyExc_NameError;
960             Py_INCREF(exception_type); 738             Py_INCREF(exception_type);
t 961             exception_value = UNSTREAM_STRING( &constant_bin[ 35 ], 38, 0 ); t 739             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 38, 0 );
962             exception_tb = NULL; 740             exception_tb = NULL;
963             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 741             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
964             CHAIN_EXCEPTION( exception_value ); 742             CHAIN_EXCEPTION( exception_value );
965 743
966             exception_lineno = 38; 744             exception_lineno = 38;