Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)22690201288.11538461538461257.0CPython 2.759704733240.03846153846155439.09190629270745Nuitka (master)59504677391.96153846153845439.30978411119327Nuitka (develop)59504785543.8846153846154439.3096664901052Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)21036611588.11538461538461257.0CPython 3.570109343240.03846153846155421.7585028496263Nuitka (master)69907879391.96153846153845421.9951609912959Nuitka (develop)69909059543.8846153846154421.99377485477936Nuitka (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;
46 static PyObject *const_str_plain_a; 41 static PyObject *const_str_plain_a;
47 extern PyObject *const_str_plain_print; 42 extern PyObject *const_str_plain_print;
n 48 static PyObject *const_str_plain_call; n
49 static PyObject *const_int_pos_50000; 43 static PyObject *const_int_pos_50000;
50 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 44 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 51 static PyObject *const_str_plain_random; n
52 static PyObject *const_str_plain_e; 45 static PyObject *const_str_plain_e;
53 static PyObject *const_str_plain_calledRepeatedly; 46 static PyObject *const_str_plain_calledRepeatedly;
54 static PyObject *const_str_digest_174fa1d83d742a52df37322ac40d3ccb; 47 static PyObject *const_str_digest_174fa1d83d742a52df37322ac40d3ccb;
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;
59 static PyObject *const_str_plain_c; 52 static PyObject *const_str_plain_c;
60 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 53 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 61 static PyObject *const_str_plain_some; n
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 extern PyObject *const_str_plain___doc__; 57 extern PyObject *const_str_plain___doc__;
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_digest_174fa1d83d742a52df37322ac40d3ccb = UNSTREAM_STRING_ASCII(&constant_bin[ 117 ], 60, 0); 88     const_str_digest_174fa1d83d742a52df37322ac40d3ccb = UNSTREAM_STRING_ASCII(&constant_bin[ 64 ], 60, 0);
115     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 177 ], 8, 0); 89     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 124 ], 8, 0);
116     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 185 ], 4, 1); 90     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 132 ], 4, 1);
117     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 189 ], 1, 1); 91     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 136 ], 1, 1);
118     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 190 ], 6, 1); 92     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 137 ], 6, 1);
119     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 93     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
120     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 94     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
121     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 95     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
n 122     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New(6); n
123     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
124     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random); Py_INCREF(const_str_plain_random);
125     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
126     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
127     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
128     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
129     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New(6);
130     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
131     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other); Py_INCREF(const_str_plain_other);
132     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
133     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
134     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
135     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
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_fbc59d3263f389edb9cddae8443f31c3; 113 static PyCodeObject *codeobj_fbc59d3263f389edb9cddae8443f31c3;
n 154 static PyCodeObject *codeobj_13c6e6aa39679c3613d86f77f8e5442a; n 114 static PyCodeObject *codeobj_955f05ccddc7adc8501666990e0081b6;
155 static PyCodeObject *codeobj_e24ade554f8c6ebe1e9e2911faad8ff7; 115 static PyCodeObject *codeobj_e24ade554f8c6ebe1e9e2911faad8ff7;
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_174fa1d83d742a52df37322ac40d3ccb; 121     module_filename_obj = const_str_digest_174fa1d83d742a52df37322ac40d3ccb;
162     codeobj_fbc59d3263f389edb9cddae8443f31c3 = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE); 122     codeobj_fbc59d3263f389edb9cddae8443f31c3 = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE);
n 163     codeobj_13c6e6aa39679c3613d86f77f8e5442a = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE); n 123     codeobj_955f05ccddc7adc8501666990e0081b6 = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE);
164     codeobj_e24ade554f8c6ebe1e9e2911faad8ff7 = 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_e24ade554f8c6ebe1e9e2911faad8ff7 = 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();
244    assert(had_error || !ERROR_OCCURRED()); 204    assert(had_error || !ERROR_OCCURRED());
245    return tmp_return_value; 205    return tmp_return_value;
246 } 206 }
247 207
248 208
n 249 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
250     // Preserve error status for checks
251 #ifndef __NUITKA_NO_ASSERT__
252     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
253 #endif
254  
255     // Local variable declarations.
256     struct Nuitka_FrameObject *frame_13c6e6aa39679c3613d86f77f8e5442a;
257     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
258     PyObject *exception_type = NULL;
259     PyObject *exception_value = NULL;
260     PyTracebackObject *exception_tb = NULL;
261     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
262     static struct Nuitka_FrameObject *cache_frame_13c6e6aa39679c3613d86f77f8e5442a = NULL;
263     PyObject *tmp_return_value = NULL;
264  
265     // Actual function body.
266     MAKE_OR_REUSE_FRAME(cache_frame_13c6e6aa39679c3613d86f77f8e5442a, codeobj_13c6e6aa39679c3613d86f77f8e5442a, module___main__, 0);
267     frame_13c6e6aa39679c3613d86f77f8e5442a = cache_frame_13c6e6aa39679c3613d86f77f8e5442a;
268  
269     // Push the new frame as the currently active one.
270     pushFrameStack(frame_13c6e6aa39679c3613d86f77f8e5442a);
271  
272     // Mark the frame object as in use, ref count 1 will be up for reuse.
273     assert(Py_REFCNT(frame_13c6e6aa39679c3613d86f77f8e5442a) == 2); // Frame stack
274  
275     // Framed code:
276     {
277         PyObject *tmp_called_name_1;
278         PyObject *tmp_mvar_value_1;
279         PyObject *tmp_call_result_1;
280         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
281  
282         if (unlikely(tmp_mvar_value_1 == NULL)) {
283             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
284         }
285  
286         if (tmp_mvar_value_1 == NULL) {
287  
288             exception_type = PyExc_NameError;
289             Py_INCREF(exception_type);
290             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
291             exception_tb = NULL;
292             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
293             CHAIN_EXCEPTION(exception_value);
294  
295             exception_lineno = 29;
296  
297             goto frame_exception_exit_1;
298         }
299  
300         tmp_called_name_1 = tmp_mvar_value_1;
301         frame_13c6e6aa39679c3613d86f77f8e5442a->m_frame.f_lineno = 29;
302         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0));
303  
304         if (tmp_call_result_1 == NULL) {
305             assert(ERROR_OCCURRED());
306  
307             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
308  
309  
310             exception_lineno = 29;
311  
312             goto frame_exception_exit_1;
313         }
314         Py_DECREF(tmp_call_result_1);
315     }
316     {
317         PyObject *tmp_called_name_2;
318         PyObject *tmp_mvar_value_2;
319         PyObject *tmp_call_result_2;
320         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
321  
322         if (unlikely(tmp_mvar_value_2 == NULL)) {
323             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
324         }
325  
326         if (tmp_mvar_value_2 == NULL) {
327  
328             exception_type = PyExc_NameError;
329             Py_INCREF(exception_type);
330             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
331             exception_tb = NULL;
332             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
333             CHAIN_EXCEPTION(exception_value);
334  
335             exception_lineno = 30;
336  
337             goto frame_exception_exit_1;
338         }
339  
340         tmp_called_name_2 = tmp_mvar_value_2;
341         frame_13c6e6aa39679c3613d86f77f8e5442a->m_frame.f_lineno = 30;
342         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0));
343  
344         if (tmp_call_result_2 == NULL) {
345             assert(ERROR_OCCURRED());
346  
347             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
348  
349  
350             exception_lineno = 30;
351  
352             goto frame_exception_exit_1;
353         }
354         Py_DECREF(tmp_call_result_2);
355     }
356     {
357         PyObject *tmp_called_name_3;
358         PyObject *tmp_mvar_value_3;
359         PyObject *tmp_call_result_3;
360         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func);
361  
362         if (unlikely(tmp_mvar_value_3 == NULL)) {
363             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func);
364         }
365  
366         if (tmp_mvar_value_3 == NULL) {
367  
368             exception_type = PyExc_NameError;
369             Py_INCREF(exception_type);
370             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 35, 0);
371             exception_tb = NULL;
372             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
373             CHAIN_EXCEPTION(exception_value);
374  
375             exception_lineno = 31;
376  
377             goto frame_exception_exit_1;
378         }
379  
380         tmp_called_name_3 = tmp_mvar_value_3;
381         frame_13c6e6aa39679c3613d86f77f8e5442a->m_frame.f_lineno = 31;
382         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0));
383  
384         if (tmp_call_result_3 == NULL) {
385             assert(ERROR_OCCURRED());
386  
387             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
388  
389  
390             exception_lineno = 31;
391  
392             goto frame_exception_exit_1;
393         }
394         Py_DECREF(tmp_call_result_3);
395     }
396  
397 #if 0
398     RESTORE_FRAME_EXCEPTION(frame_13c6e6aa39679c3613d86f77f8e5442a);
399 #endif
400  
401     // Put the previous frame back on top.
402     popFrameStack();
403  
404     goto frame_no_exception_1;
405  
406     frame_exception_exit_1:;
407  
408 #if 0
409     RESTORE_FRAME_EXCEPTION(frame_13c6e6aa39679c3613d86f77f8e5442a);
410 #endif
411  
412     if (exception_tb == NULL) {
413         exception_tb = MAKE_TRACEBACK(frame_13c6e6aa39679c3613d86f77f8e5442a, exception_lineno);
414     }
415     else if (exception_tb->tb_frame != &frame_13c6e6aa39679c3613d86f77f8e5442a->m_frame) {
416         exception_tb = ADD_TRACEBACK(exception_tb, frame_13c6e6aa39679c3613d86f77f8e5442a, exception_lineno);
417     }
418  
419     // Attachs locals to frame if any.
420     Nuitka_Frame_AttachLocals(
421         (struct Nuitka_FrameObject *)frame_13c6e6aa39679c3613d86f77f8e5442a,
422         type_description_1
423     );
424  
425  
426     // Release cached frame.
427     if (frame_13c6e6aa39679c3613d86f77f8e5442a == cache_frame_13c6e6aa39679c3613d86f77f8e5442a) {
428         Py_DECREF(frame_13c6e6aa39679c3613d86f77f8e5442a);
429     }
430     cache_frame_13c6e6aa39679c3613d86f77f8e5442a = NULL;
431  
432     assertFrameObject(frame_13c6e6aa39679c3613d86f77f8e5442a);
433  
434     // Put the previous frame back on top.
435     popFrameStack();
436  
437     // Return the error.
438     goto function_exception_exit;
439  
440     frame_no_exception_1:;
441     tmp_return_value = Py_None;
442     Py_INCREF(tmp_return_value);
443     goto function_return_exit;
444  
445     // Return statement must have exited already.
446     NUITKA_CANNOT_GET_HERE(__main__$$$function_2_calledRepeatedly);
447     return NULL;
448  
449 function_exception_exit:
450     assert(exception_type);
451     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
452  
453     return NULL;
454  
455 function_return_exit:
456    // Function cleanup code if any.
457  
458  
459    // Actual function exit with return value, making sure we did not make
460    // the error status worse despite non-NULL return.
461    CHECK_OBJECT(tmp_return_value);
462    assert(had_error || !ERROR_OCCURRED());
463    return tmp_return_value;
464 }
465  
466  
467 209
468 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() { 210 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func() {
469     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 211     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
470         impl___main__$$$function_1_compiled_func, 212         impl___main__$$$function_1_compiled_func,
471         const_str_plain_compiled_func, 213         const_str_plain_compiled_func,
488 230
489 231
490 232
491 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 233 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
492     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 234     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 493         impl___main__$$$function_2_calledRepeatedly, n 235         NULL,
494         const_str_plain_calledRepeatedly, 236         const_str_plain_calledRepeatedly,
495 #if PYTHON_VERSION >= 300 237 #if PYTHON_VERSION >= 300
496         NULL, 238         NULL,
497 #endif 239 #endif
n 498         codeobj_13c6e6aa39679c3613d86f77f8e5442a, n 240         codeobj_955f05ccddc7adc8501666990e0081b6,
499         NULL, 241         NULL,
500 #if PYTHON_VERSION >= 300 242 #if PYTHON_VERSION >= 300
501         NULL, 243         NULL,
502         NULL, 244         NULL,
503 #endif 245 #endif
961 703
962         if (tmp_mvar_value_2 == NULL) { 704         if (tmp_mvar_value_2 == NULL) {
963 705
964             exception_type = PyExc_NameError; 706             exception_type = PyExc_NameError;
965             Py_INCREF(exception_type); 707             Py_INCREF(exception_type);
t 966             exception_value = UNSTREAM_STRING(&constant_bin[ 35 ], 38, 0); t 708             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 38, 0);
967             exception_tb = NULL; 709             exception_tb = NULL;
968             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 710             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
969             CHAIN_EXCEPTION(exception_value); 711             CHAIN_EXCEPTION(exception_value);
970 712
971             exception_lineno = 38; 713             exception_lineno = 38;