Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000150000000150000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)15724402788.11538461538461257.0CPython 2.7102493559240.03846153846155343.0425875362013Nuitka (master)102244083391.96153846153845343.43464921808834Nuitka (develop)102244088543.8846153846154343.43464136038494Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)14526476788.11538461538461257.00000000000006CPython 3.599512109240.03846153846155334.8315754903332Nuitka (master)99310806391.96153846153845335.1740196307573Nuitka (develop)99305907543.8846153846154335.18235350478767Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks

Source Code with Construct

from __future__ import print_function

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    python_func("some", "random", "values", "to", "check", "call")
    python_func("some", "other", "values", "to", "check", "call")
    python_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

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

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
26 26
27 def calledRepeatedly(): 27 def calledRepeatedly():
28     # This is supposed to make a call to a non-compiled function, which is 28     # This is supposed to make a call to a non-compiled function, which is
29     # being optimized separately. 29     # being optimized separately.
30 # construct_begin 30 # construct_begin
n 31     python_func("some", "random", "values", "to", "check", "call") n
32     python_func("some", "other", "values", "to", "check", "call")
33     python_func("some", "new", "values", "to", "check", "call")
34 # construct_alternative
35 31
36 32
t t 33  
34 # construct_alternative
35     pass
36 # construct_end
37 37
38 import itertools 38 import itertools
39 for x in itertools.repeat(None, 50000): 39 for x in itertools.repeat(None, 50000):
40     calledRepeatedly() 40     calledRepeatedly()
41 41

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_itertools; 34 static PyObject *const_str_plain_itertools;
36 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d; 35 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d;
n 37 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
38 static PyObject *const_str_plain_values;
39 extern PyObject *const_str_plain___file__; 36 extern PyObject *const_str_plain___file__;
40 static PyObject *const_str_digest_a48efe5c0258d42f4495ee63c26e2e96; 37 static PyObject *const_str_digest_a48efe5c0258d42f4495ee63c26e2e96;
n 41 static PyObject *const_str_plain_other; n
42 extern PyObject *const_int_0; 38 extern PyObject *const_int_0;
n 43 static PyObject *const_str_plain_check; n
44 extern PyObject *const_str_plain_print; 39 extern PyObject *const_str_plain_print;
n 45 static PyObject *const_str_plain_call; n
46 static PyObject *const_int_pos_50000; 40 static PyObject *const_int_pos_50000;
47 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 41 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 48 static PyObject *const_str_plain_random; n
49 static PyObject *const_str_plain_print_function; 42 static PyObject *const_str_plain_print_function;
50 static PyObject *const_str_plain_calledRepeatedly; 43 static PyObject *const_str_plain_calledRepeatedly;
51 static PyObject *const_str_angle_module; 44 static PyObject *const_str_angle_module;
52 static PyObject *const_str_plain_None; 45 static PyObject *const_str_plain_None;
53 static PyObject *const_str_plain_x; 46 static PyObject *const_str_plain_x;
54 extern PyObject *const_tuple_empty; 47 extern PyObject *const_tuple_empty;
55 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 48 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 56 static PyObject *const_str_plain_python_func; n
57 static PyObject *const_str_plain_some;
58 static PyObject *const_str_plain_repeat; 49 static PyObject *const_str_plain_repeat;
n 59 static PyObject *const_str_plain_new; n
60 static PyObject *const_tuple_none_int_pos_50000_tuple; 50 static PyObject *const_tuple_none_int_pos_50000_tuple;
n 61 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
62 static PyObject *const_str_angle_string; 51 static PyObject *const_str_angle_string;
n 63 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple; n
64 extern PyObject *const_str_plain___doc__; 52 extern PyObject *const_str_plain___doc__;
65 extern PyObject *const_str_plain___cached__; 53 extern PyObject *const_str_plain___cached__;
66 static PyObject *const_str_plain_exec; 54 static PyObject *const_str_plain_exec;
67 static PyObject *module_filename_obj; 55 static PyObject *module_filename_obj;
68 56
70 static bool constants_created = false; 58 static bool constants_created = false;
71 59
72 /* Function to create module private constants. */ 60 /* Function to create module private constants. */
73 static void createModuleConstants( void ) 61 static void createModuleConstants( void )
74 { 62 {
n 75     const_str_plain_to = UNSTREAM_STRING_ASCII(&constant_bin[ 71 ], 2, 1); n
76     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 73 ], 9, 1); 63     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 38 ], 9, 1);
77     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII(&constant_bin[ 82 ], 40, 0); 64     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII(&constant_bin[ 47 ], 40, 0);
78     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New(6);
79     const_str_plain_some = UNSTREAM_STRING_ASCII(&constant_bin[ 122 ], 4, 1);
80     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
81     const_str_plain_new = UNSTREAM_STRING_ASCII(&constant_bin[ 126 ], 3, 1);
82     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new); Py_INCREF(const_str_plain_new);
83     const_str_plain_values = UNSTREAM_STRING_ASCII(&constant_bin[ 129 ], 6, 1);
84     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
85     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
86     const_str_plain_check = UNSTREAM_STRING_ASCII(&constant_bin[ 135 ], 5, 1);
87     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
88     const_str_plain_call = UNSTREAM_STRING_ASCII(&constant_bin[ 39 ], 4, 1);
89     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
90     const_str_digest_a48efe5c0258d42f4495ee63c26e2e96 = UNSTREAM_STRING_ASCII(&constant_bin[ 140 ], 54, 0); 65     const_str_digest_a48efe5c0258d42f4495ee63c26e2e96 = UNSTREAM_STRING_ASCII(&constant_bin[ 87 ], 54, 0);
91     const_str_plain_other = UNSTREAM_STRING_ASCII(&constant_bin[ 194 ], 5, 1);
92     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 66     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
93     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1); 67     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1);
n 94     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 199 ], 3, 0); n 68     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 141 ], 3, 0);
95     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352); 69     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352);
n 96     const_str_plain_random = UNSTREAM_STRING_ASCII(&constant_bin[ 202 ], 6, 1); n
97     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 208 ], 14, 1); 70     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 144 ], 14, 1);
98     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 39 ], 16, 1); 71     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 16, 1);
99     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 222 ], 8, 0); 72     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 158 ], 8, 0);
100     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 230 ], 4, 1); 73     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 166 ], 4, 1);
101     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 234 ], 1, 1); 74     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 170 ], 1, 1);
102     const_str_plain_python_func = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 11, 1);
103     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 235 ], 6, 1); 75     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 171 ], 6, 1);
104     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 76     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
105     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 77     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
106     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 78     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
n 107     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New(6); n
108     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
109     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random); Py_INCREF(const_str_plain_random);
110     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
111     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
112     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
113     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
114     const_str_angle_string = UNSTREAM_STRING_ASCII(&constant_bin[ 241 ], 8, 0); 79     const_str_angle_string = UNSTREAM_STRING_ASCII(&constant_bin[ 177 ], 8, 0);
115     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New(6);
116     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
117     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other); Py_INCREF(const_str_plain_other);
118     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
119     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
120     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
121     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
122     const_str_plain_exec = UNSTREAM_STRING_ASCII(&constant_bin[ 249 ], 4, 1); 80     const_str_plain_exec = UNSTREAM_STRING_ASCII(&constant_bin[ 185 ], 4, 1);
123 81
124     constants_created = true; 82     constants_created = true;
125 } 83 }
126 84
127 /* Function to verify module private constants for non-corruption. */ 85 /* Function to verify module private constants for non-corruption. */
135 } 93 }
136 #endif 94 #endif
137 95
138 // The module code objects. 96 // The module code objects.
139 static PyCodeObject *codeobj_e6088fd470b52986b80c4f2c914704fb; 97 static PyCodeObject *codeobj_e6088fd470b52986b80c4f2c914704fb;
n 140 static PyCodeObject *codeobj_6c5677d07674f013a7f9ddb63ff2c697; n 98 static PyCodeObject *codeobj_e19d76e2588c32f99d27ca0d3463d77a;
141 /* For use in "MainProgram.c". */ 99 /* For use in "MainProgram.c". */
142 PyCodeObject *codeobj_main = NULL; 100 PyCodeObject *codeobj_main = NULL;
143 101
144 static void createModuleCodeObjects(void) 102 static void createModuleCodeObjects(void)
145 { 103 {
146     module_filename_obj = const_str_digest_a48efe5c0258d42f4495ee63c26e2e96; 104     module_filename_obj = const_str_digest_a48efe5c0258d42f4495ee63c26e2e96;
147     codeobj_e6088fd470b52986b80c4f2c914704fb = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE); 105     codeobj_e6088fd470b52986b80c4f2c914704fb = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE);
n 148     codeobj_6c5677d07674f013a7f9ddb63ff2c697 = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE); n 106     codeobj_e19d76e2588c32f99d27ca0d3463d77a = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_NOFREE);
149 } 107 }
150 108
151 // The module function declarations. 109 // The module function declarations.
152 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 110 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
153 111
154 112
155 // The module function definitions. 113 // The module function definitions.
n 156 static PyObject *impl___main__$$$function_1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
157     // Preserve error status for checks
158 #ifndef __NUITKA_NO_ASSERT__
159     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
160 #endif
161  
162     // Local variable declarations.
163     struct Nuitka_FrameObject *frame_6c5677d07674f013a7f9ddb63ff2c697;
164     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
165     PyObject *exception_type = NULL;
166     PyObject *exception_value = NULL;
167     PyTracebackObject *exception_tb = NULL;
168     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
169     static struct Nuitka_FrameObject *cache_frame_6c5677d07674f013a7f9ddb63ff2c697 = NULL;
170     PyObject *tmp_return_value = NULL;
171  
172     // Actual function body.
173     MAKE_OR_REUSE_FRAME(cache_frame_6c5677d07674f013a7f9ddb63ff2c697, codeobj_6c5677d07674f013a7f9ddb63ff2c697, module___main__, 0);
174     frame_6c5677d07674f013a7f9ddb63ff2c697 = cache_frame_6c5677d07674f013a7f9ddb63ff2c697;
175  
176     // Push the new frame as the currently active one.
177     pushFrameStack(frame_6c5677d07674f013a7f9ddb63ff2c697);
178  
179     // Mark the frame object as in use, ref count 1 will be up for reuse.
180     assert(Py_REFCNT(frame_6c5677d07674f013a7f9ddb63ff2c697) == 2); // Frame stack
181  
182     // Framed code:
183     {
184         PyObject *tmp_called_name_1;
185         PyObject *tmp_mvar_value_1;
186         PyObject *tmp_call_result_1;
187         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
188  
189         if (unlikely(tmp_mvar_value_1 == NULL)) {
190             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
191         }
192  
193         if (tmp_mvar_value_1 == NULL) {
194  
195             exception_type = PyExc_NameError;
196             Py_INCREF(exception_type);
197             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
198             exception_tb = NULL;
199             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
200             CHAIN_EXCEPTION(exception_value);
201  
202             exception_lineno = 31;
203  
204             goto frame_exception_exit_1;
205         }
206  
207         tmp_called_name_1 = tmp_mvar_value_1;
208         frame_6c5677d07674f013a7f9ddb63ff2c697->m_frame.f_lineno = 31;
209         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0));
210  
211         if (tmp_call_result_1 == NULL) {
212             assert(ERROR_OCCURRED());
213  
214             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
215  
216  
217             exception_lineno = 31;
218  
219             goto frame_exception_exit_1;
220         }
221         Py_DECREF(tmp_call_result_1);
222     }
223     {
224         PyObject *tmp_called_name_2;
225         PyObject *tmp_mvar_value_2;
226         PyObject *tmp_call_result_2;
227         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
228  
229         if (unlikely(tmp_mvar_value_2 == NULL)) {
230             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
231         }
232  
233         if (tmp_mvar_value_2 == NULL) {
234  
235             exception_type = PyExc_NameError;
236             Py_INCREF(exception_type);
237             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
238             exception_tb = NULL;
239             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
240             CHAIN_EXCEPTION(exception_value);
241  
242             exception_lineno = 32;
243  
244             goto frame_exception_exit_1;
245         }
246  
247         tmp_called_name_2 = tmp_mvar_value_2;
248         frame_6c5677d07674f013a7f9ddb63ff2c697->m_frame.f_lineno = 32;
249         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0));
250  
251         if (tmp_call_result_2 == NULL) {
252             assert(ERROR_OCCURRED());
253  
254             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
255  
256  
257             exception_lineno = 32;
258  
259             goto frame_exception_exit_1;
260         }
261         Py_DECREF(tmp_call_result_2);
262     }
263     {
264         PyObject *tmp_called_name_3;
265         PyObject *tmp_mvar_value_3;
266         PyObject *tmp_call_result_3;
267         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
268  
269         if (unlikely(tmp_mvar_value_3 == NULL)) {
270             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
271         }
272  
273         if (tmp_mvar_value_3 == NULL) {
274  
275             exception_type = PyExc_NameError;
276             Py_INCREF(exception_type);
277             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
278             exception_tb = NULL;
279             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
280             CHAIN_EXCEPTION(exception_value);
281  
282             exception_lineno = 33;
283  
284             goto frame_exception_exit_1;
285         }
286  
287         tmp_called_name_3 = tmp_mvar_value_3;
288         frame_6c5677d07674f013a7f9ddb63ff2c697->m_frame.f_lineno = 33;
289         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0));
290  
291         if (tmp_call_result_3 == NULL) {
292             assert(ERROR_OCCURRED());
293  
294             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
295  
296  
297             exception_lineno = 33;
298  
299             goto frame_exception_exit_1;
300         }
301         Py_DECREF(tmp_call_result_3);
302     }
303  
304 #if 0
305     RESTORE_FRAME_EXCEPTION(frame_6c5677d07674f013a7f9ddb63ff2c697);
306 #endif
307  
308     // Put the previous frame back on top.
309     popFrameStack();
310  
311     goto frame_no_exception_1;
312  
313     frame_exception_exit_1:;
314  
315 #if 0
316     RESTORE_FRAME_EXCEPTION(frame_6c5677d07674f013a7f9ddb63ff2c697);
317 #endif
318  
319     if (exception_tb == NULL) {
320         exception_tb = MAKE_TRACEBACK(frame_6c5677d07674f013a7f9ddb63ff2c697, exception_lineno);
321     }
322     else if (exception_tb->tb_frame != &frame_6c5677d07674f013a7f9ddb63ff2c697->m_frame) {
323         exception_tb = ADD_TRACEBACK(exception_tb, frame_6c5677d07674f013a7f9ddb63ff2c697, exception_lineno);
324     }
325  
326     // Attachs locals to frame if any.
327     Nuitka_Frame_AttachLocals(
328         (struct Nuitka_FrameObject *)frame_6c5677d07674f013a7f9ddb63ff2c697,
329         type_description_1
330     );
331  
332  
333     // Release cached frame.
334     if (frame_6c5677d07674f013a7f9ddb63ff2c697 == cache_frame_6c5677d07674f013a7f9ddb63ff2c697) {
335         Py_DECREF(frame_6c5677d07674f013a7f9ddb63ff2c697);
336     }
337     cache_frame_6c5677d07674f013a7f9ddb63ff2c697 = NULL;
338  
339     assertFrameObject(frame_6c5677d07674f013a7f9ddb63ff2c697);
340  
341     // Put the previous frame back on top.
342     popFrameStack();
343  
344     // Return the error.
345     goto function_exception_exit;
346  
347     frame_no_exception_1:;
348     tmp_return_value = Py_None;
349     Py_INCREF(tmp_return_value);
350     goto function_return_exit;
351  
352     // Return statement must have exited already.
353     NUITKA_CANNOT_GET_HERE(__main__$$$function_1_calledRepeatedly);
354     return NULL;
355  
356 function_exception_exit:
357     assert(exception_type);
358     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
359  
360     return NULL;
361  
362 function_return_exit:
363    // Function cleanup code if any.
364  
365  
366    // Actual function exit with return value, making sure we did not make
367    // the error status worse despite non-NULL return.
368    CHECK_OBJECT(tmp_return_value);
369    assert(had_error || !ERROR_OCCURRED());
370    return tmp_return_value;
371 }
372  
373  
374 114
375 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() { 115 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() {
376     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 116     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 377         impl___main__$$$function_1_calledRepeatedly, n 117         NULL,
378         const_str_plain_calledRepeatedly, 118         const_str_plain_calledRepeatedly,
379 #if PYTHON_VERSION >= 300 119 #if PYTHON_VERSION >= 300
380         NULL, 120         NULL,
381 #endif 121 #endif
n 382         codeobj_6c5677d07674f013a7f9ddb63ff2c697, n 122         codeobj_e19d76e2588c32f99d27ca0d3463d77a,
383         NULL, 123         NULL,
384 #if PYTHON_VERSION >= 300 124 #if PYTHON_VERSION >= 300
385         NULL, 125         NULL,
386         NULL, 126         NULL,
387 #endif 127 #endif
942 682
943         if (tmp_mvar_value_2 == NULL) { 683         if (tmp_mvar_value_2 == NULL) {
944 684
945             exception_type = PyExc_NameError; 685             exception_type = PyExc_NameError;
946             Py_INCREF(exception_type); 686             Py_INCREF(exception_type);
t 947             exception_value = UNSTREAM_STRING(&constant_bin[ 33 ], 38, 0); t 687             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 38, 0);
948             exception_tb = NULL; 688             exception_tb = NULL;
949             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 689             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
950             CHAIN_EXCEPTION(exception_value); 690             CHAIN_EXCEPTION(exception_value);
951 691
952             exception_lineno = 40; 692             exception_lineno = 40;