Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)22690201288.11538461538461257.0CPython 2.759704726240.03846153846155439.09191391629645Nuitka (master)59504699391.96153846153845439.309760151342Nuitka (develop)59504748543.8846153846154439.3097067862187Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)21036611588.11538461538461257.0CPython 3.570109374240.03846153846155421.75846643417543Nuitka (master)69908270391.96153846153845421.99470168673827Nuitka (develop)69907603543.8846153846154421.99548520627775Nuitka (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
29 29
30 PyObject *module___main__; 30 PyObject *module___main__;
31 PyDictObject *moduledict___main__; 31 PyDictObject *moduledict___main__;
32 32
33 /* The declarations of module constants used, if any. */ 33 /* The declarations of module constants used, if any. */
n 34 static PyObject *const_str_plain_to; n
35 static PyObject *const_str_plain_b; 34 static PyObject *const_str_plain_b;
36 static PyObject *const_str_plain_itertools; 35 static PyObject *const_str_plain_itertools;
37 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple; 36 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple;
n 38 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
39 static PyObject *const_str_plain_f; 37 static PyObject *const_str_plain_f;
n 40 static PyObject *const_str_plain_values; n
41 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
n 42 static PyObject *const_str_plain_other; n
43 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
n 44 static PyObject *const_str_plain_check; n
45 static PyObject *const_str_plain_compiled_func; 40 static PyObject *const_str_plain_compiled_func;
n n 41 static PyObject *const_str_plain_a;
46 extern PyObject *const_str_plain_print; 42 extern PyObject *const_str_plain_print;
n 47 static PyObject *const_str_plain_a; n
48 static PyObject *const_str_plain_call;
49 static PyObject *const_int_pos_50000; 43 static PyObject *const_int_pos_50000;
n n 44 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
50 extern PyObject *const_str_plain___doc__; 45 extern PyObject *const_str_plain___doc__;
n 51 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; n
52 static PyObject *const_str_plain_random;
53 static PyObject *const_str_plain_e; 46 static PyObject *const_str_plain_e;
54 static PyObject *const_str_plain_calledRepeatedly; 47 static PyObject *const_str_plain_calledRepeatedly;
55 static PyObject *const_str_angle_module; 48 static PyObject *const_str_angle_module;
56 static PyObject *const_str_plain_None; 49 static PyObject *const_str_plain_None;
57 static PyObject *const_str_plain_x; 50 static PyObject *const_str_plain_x;
58 extern PyObject *const_tuple_empty; 51 extern PyObject *const_tuple_empty;
n n 52 static PyObject *const_str_plain_c;
59 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 53 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 60 static PyObject *const_str_plain_c; n
61 static PyObject *const_str_plain_some;
62 static PyObject *const_str_plain_repeat; 54 static PyObject *const_str_plain_repeat;
n 63 static PyObject *const_str_plain_new; n
64 static PyObject *const_tuple_none_int_pos_50000_tuple; 55 static PyObject *const_tuple_none_int_pos_50000_tuple;
n 65 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
66 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
67 static PyObject *const_str_plain_d; 56 static PyObject *const_str_plain_d;
68 static PyObject *const_str_digest_2a3ee39cffd484e418d00843ccbc8351; 57 static PyObject *const_str_digest_2a3ee39cffd484e418d00843ccbc8351;
69 extern PyObject *const_str_plain___cached__; 58 extern PyObject *const_str_plain___cached__;
70 static PyObject *const_str_plain_print_function; 59 static PyObject *const_str_plain_print_function;
71 static PyObject *module_filename_obj; 60 static PyObject *module_filename_obj;
74 static bool constants_created = false; 63 static bool constants_created = false;
75 64
76 /* Function to create module private constants. */ 65 /* Function to create module private constants. */
77 static void createModuleConstants( void ) 66 static void createModuleConstants( void )
78 { 67 {
n 79     const_str_plain_to = UNSTREAM_STRING_ASCII( &constant_bin[ 73 ], 2, 1 ); n
80     const_str_plain_b = UNSTREAM_STRING_ASCII( &constant_bin[ 75 ], 1, 1 ); 68     const_str_plain_b = UNSTREAM_STRING_ASCII( &constant_bin[ 38 ], 1, 1 );
81     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 76 ], 9, 1 ); 69     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 39 ], 9, 1 );
82     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 ); 70     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 );
83     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 1 ], 1, 1 ); 71     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 1 ], 1, 1 );
84     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF(const_str_plain_a); 72     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF(const_str_plain_a);
85     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF(const_str_plain_b); 73     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF(const_str_plain_b);
86     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 1, 1 ); 74     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 1, 1 );
87     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF(const_str_plain_c); 75     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF(const_str_plain_c);
n 88     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 13 ], 1, 1 ); n 76     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 11 ], 1, 1 );
89     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF(const_str_plain_d); 77     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF(const_str_plain_d);
90     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 ); 78     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 );
91     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF(const_str_plain_e); 79     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF(const_str_plain_e);
n 92     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 15 ], 1, 1 ); n 80     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 33 ], 1, 1 );
93     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF(const_str_plain_f); 81     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF(const_str_plain_f);
n 94     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 ); n
95     const_str_plain_some = UNSTREAM_STRING_ASCII( &constant_bin[ 85 ], 4, 1 );
96     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
97     const_str_plain_new = UNSTREAM_STRING_ASCII( &constant_bin[ 89 ], 3, 1 );
98     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF(const_str_plain_new);
99     const_str_plain_values = UNSTREAM_STRING_ASCII( &constant_bin[ 92 ], 6, 1 );
100     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
101     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
102     const_str_plain_check = UNSTREAM_STRING_ASCII( &constant_bin[ 98 ], 5, 1 );
103     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
104     const_str_plain_call = UNSTREAM_STRING_ASCII( &constant_bin[ 41 ], 4, 1 );
105     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
106     const_str_plain_other = UNSTREAM_STRING_ASCII( &constant_bin[ 103 ], 5, 1 );
107     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 13, 1 ); 82     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 48 ], 13, 1 );
108     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 83     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
109     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 84     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 110     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 108 ], 3, 0 ); n 85     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 61 ], 3, 0 );
111     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352); 86     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352);
n 112     const_str_plain_random = UNSTREAM_STRING_ASCII( &constant_bin[ 111 ], 6, 1 ); n
113     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 41 ], 16, 1 ); 87     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 16, 1 );
114     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 117 ], 8, 0 ); 88     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 64 ], 8, 0 );
115     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 125 ], 4, 1 ); 89     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 72 ], 4, 1 );
116     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 129 ], 1, 1 ); 90     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 76 ], 1, 1 );
117     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 130 ], 6, 1 ); 91     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 77 ], 6, 1 );
118     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 92     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
119     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF(Py_None); 93     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF(Py_None);
120     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF(const_int_pos_50000); 94     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF(const_int_pos_50000);
n 121     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 ); n
122     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
123     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF(const_str_plain_random);
124     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
125     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
126     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
127     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
128     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
129     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
130     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF(const_str_plain_other);
131     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
132     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
133     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
134     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
135     const_str_digest_2a3ee39cffd484e418d00843ccbc8351 = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 60, 0 ); 95     const_str_digest_2a3ee39cffd484e418d00843ccbc8351 = UNSTREAM_STRING_ASCII( &constant_bin[ 83 ], 60, 0 );
136     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 196 ], 14, 1 ); 96     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 143 ], 14, 1 );
137 97
138     constants_created = true; 98     constants_created = true;
139 } 99 }
140 100
141 /* Function to verify module private constants for non-corruption. */ 101 /* Function to verify module private constants for non-corruption. */
149 } 109 }
150 #endif 110 #endif
151 111
152 // The module code objects. 112 // The module code objects.
153 static PyCodeObject *codeobj_c58f2ad84c6355bc11d562989f8a6ece; 113 static PyCodeObject *codeobj_c58f2ad84c6355bc11d562989f8a6ece;
n 154 static PyCodeObject *codeobj_f4f24048a791f3fb6044d46c02bf9fee; n 114 static PyCodeObject *codeobj_8584e1b605e222980b414c5a2c6c694d;
155 static PyCodeObject *codeobj_d1d1dca1d5542e3877b1b1000aa58b45; 115 static PyCodeObject *codeobj_d1d1dca1d5542e3877b1b1000aa58b45;
156 /* For use in "MainProgram.c". */ 116 /* For use in "MainProgram.c". */
157 PyCodeObject *codeobj_main = NULL; 117 PyCodeObject *codeobj_main = NULL;
158 118
159 static void createModuleCodeObjects(void) 119 static void createModuleCodeObjects(void)
160 { 120 {
161     module_filename_obj = const_str_digest_2a3ee39cffd484e418d00843ccbc8351; 121     module_filename_obj = const_str_digest_2a3ee39cffd484e418d00843ccbc8351;
162     codeobj_c58f2ad84c6355bc11d562989f8a6ece = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 122     codeobj_c58f2ad84c6355bc11d562989f8a6ece = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
n 163     codeobj_f4f24048a791f3fb6044d46c02bf9fee = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 123     codeobj_8584e1b605e222980b414c5a2c6c694d = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
164     codeobj_d1d1dca1d5542e3877b1b1000aa58b45 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 124     codeobj_d1d1dca1d5542e3877b1b1000aa58b45 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
165 } 125 }
166 126
167 // The module function declarations. 127 // The module function declarations.
168 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  ); 128 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  );
245    assert(had_error || !ERROR_OCCURRED()); 205    assert(had_error || !ERROR_OCCURRED());
246    return tmp_return_value; 206    return tmp_return_value;
247 } 207 }
248 208
249 209
n 250 static PyObject *impl___main__$$$function_2_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
251 {
252     // Preserve error status for checks
253 #ifndef __NUITKA_NO_ASSERT__
254     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
255 #endif
256  
257     // Local variable declarations.
258     struct Nuitka_FrameObject *frame_f4f24048a791f3fb6044d46c02bf9fee;
259     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
260     PyObject *exception_type = NULL;
261     PyObject *exception_value = NULL;
262     PyTracebackObject *exception_tb = NULL;
263     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
264     static struct Nuitka_FrameObject *cache_frame_f4f24048a791f3fb6044d46c02bf9fee = NULL;
265     PyObject *tmp_return_value = NULL;
266  
267     // Actual function body.
268     MAKE_OR_REUSE_FRAME(cache_frame_f4f24048a791f3fb6044d46c02bf9fee, codeobj_f4f24048a791f3fb6044d46c02bf9fee, module___main__, 0);
269     frame_f4f24048a791f3fb6044d46c02bf9fee = cache_frame_f4f24048a791f3fb6044d46c02bf9fee;
270  
271     // Push the new frame as the currently active one.
272     pushFrameStack(frame_f4f24048a791f3fb6044d46c02bf9fee);
273  
274     // Mark the frame object as in use, ref count 1 will be up for reuse.
275     assert(Py_REFCNT(frame_f4f24048a791f3fb6044d46c02bf9fee) == 2); // Frame stack
276  
277     // Framed code:
278     {
279         PyObject *tmp_called_name_1;
280         PyObject *tmp_mvar_value_1;
281         PyObject *tmp_call_result_1;
282         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
283  
284         if (unlikely( tmp_mvar_value_1 == NULL )) {
285             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
286         }
287  
288         if ( tmp_mvar_value_1 == NULL )
289         {
290  
291             exception_type = PyExc_NameError;
292             Py_INCREF(exception_type);
293             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
294             exception_tb = NULL;
295             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
296             CHAIN_EXCEPTION( exception_value );
297  
298             exception_lineno = 29;
299  
300             goto frame_exception_exit_1;
301         }
302  
303         tmp_called_name_1 = tmp_mvar_value_1;
304         frame_f4f24048a791f3fb6044d46c02bf9fee->m_frame.f_lineno = 29;
305         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
306  
307         if ( tmp_call_result_1 == NULL )
308         {
309             assert(ERROR_OCCURRED());
310  
311             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
312  
313  
314             exception_lineno = 29;
315  
316             goto frame_exception_exit_1;
317         }
318         Py_DECREF(tmp_call_result_1);
319     }
320     {
321         PyObject *tmp_called_name_2;
322         PyObject *tmp_mvar_value_2;
323         PyObject *tmp_call_result_2;
324         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
325  
326         if (unlikely( tmp_mvar_value_2 == NULL )) {
327             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
328         }
329  
330         if ( tmp_mvar_value_2 == NULL )
331         {
332  
333             exception_type = PyExc_NameError;
334             Py_INCREF(exception_type);
335             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
336             exception_tb = NULL;
337             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
338             CHAIN_EXCEPTION( exception_value );
339  
340             exception_lineno = 30;
341  
342             goto frame_exception_exit_1;
343         }
344  
345         tmp_called_name_2 = tmp_mvar_value_2;
346         frame_f4f24048a791f3fb6044d46c02bf9fee->m_frame.f_lineno = 30;
347         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
348  
349         if ( tmp_call_result_2 == NULL )
350         {
351             assert(ERROR_OCCURRED());
352  
353             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
354  
355  
356             exception_lineno = 30;
357  
358             goto frame_exception_exit_1;
359         }
360         Py_DECREF(tmp_call_result_2);
361     }
362     {
363         PyObject *tmp_called_name_3;
364         PyObject *tmp_mvar_value_3;
365         PyObject *tmp_call_result_3;
366         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
367  
368         if (unlikely( tmp_mvar_value_3 == NULL )) {
369             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
370         }
371  
372         if ( tmp_mvar_value_3 == NULL )
373         {
374  
375             exception_type = PyExc_NameError;
376             Py_INCREF(exception_type);
377             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 35, 0 );
378             exception_tb = NULL;
379             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
380             CHAIN_EXCEPTION( exception_value );
381  
382             exception_lineno = 31;
383  
384             goto frame_exception_exit_1;
385         }
386  
387         tmp_called_name_3 = tmp_mvar_value_3;
388         frame_f4f24048a791f3fb6044d46c02bf9fee->m_frame.f_lineno = 31;
389         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
390  
391         if ( tmp_call_result_3 == NULL )
392         {
393             assert(ERROR_OCCURRED());
394  
395             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
396  
397  
398             exception_lineno = 31;
399  
400             goto frame_exception_exit_1;
401         }
402         Py_DECREF(tmp_call_result_3);
403     }
404  
405 #if 0
406     RESTORE_FRAME_EXCEPTION(frame_f4f24048a791f3fb6044d46c02bf9fee);
407 #endif
408  
409     // Put the previous frame back on top.
410     popFrameStack();
411  
412     goto frame_no_exception_1;
413  
414     frame_exception_exit_1:;
415  
416 #if 0
417     RESTORE_FRAME_EXCEPTION(frame_f4f24048a791f3fb6044d46c02bf9fee);
418 #endif
419  
420     if (exception_tb == NULL) {
421         exception_tb = MAKE_TRACEBACK( frame_f4f24048a791f3fb6044d46c02bf9fee, exception_lineno );
422     }
423     else if (exception_tb->tb_frame != &frame_f4f24048a791f3fb6044d46c02bf9fee->m_frame) {
424         exception_tb = ADD_TRACEBACK(exception_tb, frame_f4f24048a791f3fb6044d46c02bf9fee, exception_lineno);
425     }
426  
427     // Attachs locals to frame if any.
428     Nuitka_Frame_AttachLocals(
429         (struct Nuitka_FrameObject *)frame_f4f24048a791f3fb6044d46c02bf9fee,
430         type_description_1
431     );
432  
433  
434     // Release cached frame.
435     if (frame_f4f24048a791f3fb6044d46c02bf9fee == cache_frame_f4f24048a791f3fb6044d46c02bf9fee) {
436         Py_DECREF(frame_f4f24048a791f3fb6044d46c02bf9fee);
437     }
438     cache_frame_f4f24048a791f3fb6044d46c02bf9fee = NULL;
439  
440     assertFrameObject(frame_f4f24048a791f3fb6044d46c02bf9fee);
441  
442     // Put the previous frame back on top.
443     popFrameStack();
444  
445     // Return the error.
446     goto function_exception_exit;
447  
448     frame_no_exception_1:;
449     tmp_return_value = Py_None;
450     Py_INCREF(tmp_return_value);
451     goto function_return_exit;
452  
453     // Return statement must have exited already.
454     NUITKA_CANNOT_GET_HERE(__main__$$$function_2_calledRepeatedly);
455     return NULL;
456  
457 function_exception_exit:
458     assert(exception_type);
459     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
460  
461     return NULL;
462  
463 function_return_exit:
464    // Function cleanup code if any.
465  
466  
467    // Actual function exit with return value, making sure we did not make
468    // the error status worse despite non-NULL return.
469    CHECK_OBJECT(tmp_return_value);
470    assert(had_error || !ERROR_OCCURRED());
471    return tmp_return_value;
472 }
473  
474  
475 210
476 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  ) 211 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  )
477 { 212 {
478     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 213     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
479         impl___main__$$$function_1_compiled_func, 214         impl___main__$$$function_1_compiled_func,
498 233
499 234
500 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(  ) 235 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly(  )
501 { 236 {
502     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 237     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 503         impl___main__$$$function_2_calledRepeatedly, n 238         NULL,
504         const_str_plain_calledRepeatedly, 239         const_str_plain_calledRepeatedly,
505 #if PYTHON_VERSION >= 300 240 #if PYTHON_VERSION >= 300
506         NULL, 241         NULL,
507 #endif 242 #endif
n 508         codeobj_f4f24048a791f3fb6044d46c02bf9fee, n 243         codeobj_8584e1b605e222980b414c5a2c6c694d,
509         NULL, 244         NULL,
510 #if PYTHON_VERSION >= 300 245 #if PYTHON_VERSION >= 300
511         NULL, 246         NULL,
512         NULL, 247         NULL,
513 #endif 248 #endif
975         if ( tmp_mvar_value_2 == NULL ) 710         if ( tmp_mvar_value_2 == NULL )
976         { 711         {
977 712
978             exception_type = PyExc_NameError; 713             exception_type = PyExc_NameError;
979             Py_INCREF(exception_type); 714             Py_INCREF(exception_type);
t 980             exception_value = UNSTREAM_STRING( &constant_bin[ 35 ], 38, 0 ); t 715             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 38, 0 );
981             exception_tb = NULL; 716             exception_tb = NULL;
982             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 717             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
983             CHAIN_EXCEPTION( exception_value ); 718             CHAIN_EXCEPTION( exception_value );
984 719
985             exception_lineno = 38; 720             exception_lineno = 38;