Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)12499092288.11538461538461257.0CPython 2.792723354240.03846153846155320.7951328731144Nuitka (master)92723354391.96153846153845320.7951328731144Nuitka (develop)92723354543.8846153846154320.7951328731144Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)12846408388.11538461538461257.0CPython 3.592957465240.03846153846155325.30104849977045Nuitka (master)92962612391.96153846153845325.2911476554651Nuitka (develop)92962637543.8846153846154325.2910995651003Nuitka (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
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *const_str_plain_to; n 36 extern PyObject *const_str_plain___file__;
37 static PyObject *const_tuple_none_int_pos_50000_tuple;
37 static PyObject *const_str_plain_itertools; 38 static PyObject *const_str_plain_itertools;
n 38 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d; n
39 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple;
40 static PyObject *const_str_plain_values; 39 static PyObject *const_str_plain_calledRepeatedly;
41 extern PyObject *const_str_plain___file__;
42 static PyObject *const_str_plain_other; 40 static PyObject *const_str_angle_string;
43 extern PyObject *const_int_0; 41 extern PyObject *const_int_0;
44 static PyObject *const_str_digest_7af1e4d07bcea5629b3d261f706e206e; 42 static PyObject *const_str_digest_7af1e4d07bcea5629b3d261f706e206e;
n n 43 static PyObject *const_str_angle_module;
44 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d;
45 static PyObject *const_str_plain_check; 45 static PyObject *const_str_plain_x;
46 static PyObject *const_int_pos_50000;
46 extern PyObject *const_str_plain_print; 47 extern PyObject *const_str_plain_print;
n 47 static PyObject *const_str_plain_call; n
48 static PyObject *const_int_pos_50000;
49 static PyObject *const_str_plain_random;
50 static PyObject *const_str_plain_print_function;
51 static PyObject *const_str_plain_calledRepeatedly;
52 static PyObject *const_str_angle_module;
53 static PyObject *const_str_plain_x; 48 static PyObject *const_str_plain_exec;
54 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
55 extern PyObject *const_tuple_empty;
56 static PyObject *const_str_plain_python_func;
57 static PyObject *const_str_plain_some;
58 static PyObject *const_str_plain_repeat;
59 static PyObject *const_str_plain_new;
60 static PyObject *const_tuple_none_int_pos_50000_tuple;
61 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple;
62 static PyObject *const_str_angle_string;
63 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
64 extern PyObject *const_str_plain___doc__; 49 extern PyObject *const_str_plain___doc__;
65 extern PyObject *const_str_plain___cached__; 50 extern PyObject *const_str_plain___cached__;
n n 51 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
52 static PyObject *const_str_plain_print_function;
66 static PyObject *const_str_plain_exec; 53 static PyObject *const_str_plain_repeat;
54 extern PyObject *const_tuple_empty;
67 static PyObject *module_filename_obj; 55 static PyObject *module_filename_obj;
68 56
69 /* Indicator if this modules private constants were created yet. */ 57 /* Indicator if this modules private constants were created yet. */
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) {
n 74     const_str_plain_to = UNSTREAM_STRING_ASCII(&constant_bin[ 71 ], 2, 1); n
75     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 73 ], 9, 1);
76     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII(&constant_bin[ 82 ], 40, 0);
77     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New(6);
78     const_str_plain_some = UNSTREAM_STRING_ASCII(&constant_bin[ 122 ], 4, 1);
79     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some);
80     const_str_plain_new = UNSTREAM_STRING_ASCII(&constant_bin[ 126 ], 3, 1);
81     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new); Py_INCREF(const_str_plain_new);
82     const_str_plain_values = UNSTREAM_STRING_ASCII(&constant_bin[ 129 ], 6, 1);
83     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
84     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
85     const_str_plain_check = UNSTREAM_STRING_ASCII(&constant_bin[ 135 ], 5, 1);
86     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
87     const_str_plain_call = UNSTREAM_STRING_ASCII(&constant_bin[ 39 ], 4, 1);
88     PyTuple_SET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
89     const_str_plain_other = UNSTREAM_STRING_ASCII(&constant_bin[ 140 ], 5, 1);
90     const_str_digest_7af1e4d07bcea5629b3d261f706e206e = UNSTREAM_STRING_ASCII(&constant_bin[ 145 ], 54, 0);
91     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
92     const_str_plain_random = UNSTREAM_STRING_ASCII(&constant_bin[ 199 ], 6, 1);
93     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 205 ], 14, 1);
94     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 39 ], 16, 1);
95     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 219 ], 8, 0);
96     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 227 ], 1, 1);
97     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 228 ], 3, 0);
98     const_str_plain_python_func = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 11, 1);
99     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 231 ], 6, 1);
100     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 62     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
101     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 63     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
n n 64     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
102     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 65     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
n 103     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New(6); n 66     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 38 ], 9, 1);
104     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some); 67     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 16, 1);
105     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random); Py_INCREF(const_str_plain_random);
106     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values);
107     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
108     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
109     PyTuple_SET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
110     const_str_angle_string = UNSTREAM_STRING_ASCII(&constant_bin[ 237 ], 8, 0); 68     const_str_angle_string = UNSTREAM_STRING_ASCII(&constant_bin[ 47 ], 8, 0);
111     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New(6); 69     const_str_digest_7af1e4d07bcea5629b3d261f706e206e = UNSTREAM_STRING_ASCII(&constant_bin[ 55 ], 54, 0);
112     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some); Py_INCREF(const_str_plain_some); 70     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 109 ], 8, 0);
113     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other); Py_INCREF(const_str_plain_other); 71     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII(&constant_bin[ 117 ], 40, 0);
114     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values); Py_INCREF(const_str_plain_values); 72     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 157 ], 1, 1);
115     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to); Py_INCREF(const_str_plain_to);
116     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check); Py_INCREF(const_str_plain_check);
117     PyTuple_SET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call); Py_INCREF(const_str_plain_call);
118     const_str_plain_exec = UNSTREAM_STRING_ASCII(&constant_bin[ 245 ], 4, 1); 73     const_str_plain_exec = UNSTREAM_STRING_ASCII(&constant_bin[ 158 ], 4, 1);
74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 162 ], 3, 0);
75     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 165 ], 14, 1);
76     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 179 ], 6, 1);
119 77
120     constants_created = true; 78     constants_created = true;
121 } 79 }
122 80
123 /* Function to verify module private constants for non-corruption. */ 81 /* Function to verify module private constants for non-corruption. */
130 } 88 }
131 #endif 89 #endif
132 90
133 // The module code objects. 91 // The module code objects.
134 static PyCodeObject *codeobj_62f550ad874b2448cf4962d410ec347a; 92 static PyCodeObject *codeobj_62f550ad874b2448cf4962d410ec347a;
n 135 static PyCodeObject *codeobj_4fd5ed4d49a2986f4329563767ccb5ff; n 93 static PyCodeObject *codeobj_c2db4bbc7b237b912bc6ed5a8c0ed0ce;
136 /* For use in "MainProgram.c". */ 94 /* For use in "MainProgram.c". */
137 PyCodeObject *codeobj_main = NULL; 95 PyCodeObject *codeobj_main = NULL;
138 96
139 static void createModuleCodeObjects(void) { 97 static void createModuleCodeObjects(void) {
140     module_filename_obj = const_str_digest_7af1e4d07bcea5629b3d261f706e206e; 98     module_filename_obj = const_str_digest_7af1e4d07bcea5629b3d261f706e206e;
141     codeobj_62f550ad874b2448cf4962d410ec347a = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, const_str_angle_module, const_tuple_empty, 0, 0, 0); 99     codeobj_62f550ad874b2448cf4962d410ec347a = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, const_str_angle_module, const_tuple_empty, 0, 0, 0);
n 142     codeobj_4fd5ed4d49a2986f4329563767ccb5ff = MAKE_CODEOBJECT(module_filename_obj, 27, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, const_str_plain_calledRepeatedly, const_tuple_empty, 0, 0, 0); n 100     codeobj_c2db4bbc7b237b912bc6ed5a8c0ed0ce = MAKE_CODEOBJECT(module_filename_obj, 27, CO_NOFREE, const_str_plain_calledRepeatedly, const_tuple_empty, 0, 0, 0);
143 } 101 }
144 102
145 // The module function declarations. 103 // The module function declarations.
146 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 104 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
147 105
148 106
149 // The module function definitions. 107 // The module function definitions.
n 150 static PyObject *impl___main__$$$function_1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
151     // Preserve error status for checks
152 #ifndef __NUITKA_NO_ASSERT__
153     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
154 #endif
155  
156     // Local variable declarations.
157     struct Nuitka_FrameObject *frame_4fd5ed4d49a2986f4329563767ccb5ff;
158     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
159     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
160     PyObject *exception_type = NULL;
161     PyObject *exception_value = NULL;
162     PyTracebackObject *exception_tb = NULL;
163     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
164     static struct Nuitka_FrameObject *cache_frame_4fd5ed4d49a2986f4329563767ccb5ff = NULL;
165     PyObject *tmp_return_value = NULL;
166  
167     // Actual function body.
168     if (isFrameUnusable(cache_frame_4fd5ed4d49a2986f4329563767ccb5ff)) {
169         Py_XDECREF(cache_frame_4fd5ed4d49a2986f4329563767ccb5ff);
170  
171 #if _DEBUG_REFCOUNTS
172         if (cache_frame_4fd5ed4d49a2986f4329563767ccb5ff == NULL) {
173             count_active_frame_cache_instances += 1;
174         } else {
175             count_released_frame_cache_instances += 1;
176         }
177         count_allocated_frame_cache_instances += 1;
178 #endif
179         cache_frame_4fd5ed4d49a2986f4329563767ccb5ff = MAKE_FUNCTION_FRAME(codeobj_4fd5ed4d49a2986f4329563767ccb5ff, module___main__, 0);
180 #if _DEBUG_REFCOUNTS
181     } else {
182         count_hit_frame_cache_instances += 1;
183 #endif
184     }
185     assert(cache_frame_4fd5ed4d49a2986f4329563767ccb5ff->m_type_description == NULL);
186     frame_4fd5ed4d49a2986f4329563767ccb5ff = cache_frame_4fd5ed4d49a2986f4329563767ccb5ff;
187  
188     // Push the new frame as the currently active one.
189     pushFrameStack(frame_4fd5ed4d49a2986f4329563767ccb5ff);
190  
191     // Mark the frame object as in use, ref count 1 will be up for reuse.
192     assert(Py_REFCNT(frame_4fd5ed4d49a2986f4329563767ccb5ff) == 2); // Frame stack
193  
194     // Framed code:
195     {
196         PyObject *tmp_called_name_1;
197         PyObject *tmp_mvar_value_1;
198         PyObject *tmp_call_result_1;
199         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
200  
201         if (unlikely(tmp_mvar_value_1 == NULL)) {
202             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
203         }
204  
205         if (tmp_mvar_value_1 == NULL) {
206  
207             exception_type = PyExc_NameError;
208             Py_INCREF(exception_type);
209             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
210             exception_tb = NULL;
211             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
212             CHAIN_EXCEPTION(exception_value);
213  
214             exception_lineno = 31;
215  
216             goto frame_exception_exit_1;
217         }
218  
219         tmp_called_name_1 = tmp_mvar_value_1;
220         frame_4fd5ed4d49a2986f4329563767ccb5ff->m_frame.f_lineno = 31;
221         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_1, &PyTuple_GET_ITEM(const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0));
222  
223         if (tmp_call_result_1 == NULL) {
224             assert(ERROR_OCCURRED());
225  
226             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
227  
228  
229             exception_lineno = 31;
230  
231             goto frame_exception_exit_1;
232         }
233         Py_DECREF(tmp_call_result_1);
234     }
235     {
236         PyObject *tmp_called_name_2;
237         PyObject *tmp_mvar_value_2;
238         PyObject *tmp_call_result_2;
239         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
240  
241         if (unlikely(tmp_mvar_value_2 == NULL)) {
242             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
243         }
244  
245         if (tmp_mvar_value_2 == NULL) {
246  
247             exception_type = PyExc_NameError;
248             Py_INCREF(exception_type);
249             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
250             exception_tb = NULL;
251             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
252             CHAIN_EXCEPTION(exception_value);
253  
254             exception_lineno = 32;
255  
256             goto frame_exception_exit_1;
257         }
258  
259         tmp_called_name_2 = tmp_mvar_value_2;
260         frame_4fd5ed4d49a2986f4329563767ccb5ff->m_frame.f_lineno = 32;
261         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_2, &PyTuple_GET_ITEM(const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0));
262  
263         if (tmp_call_result_2 == NULL) {
264             assert(ERROR_OCCURRED());
265  
266             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
267  
268  
269             exception_lineno = 32;
270  
271             goto frame_exception_exit_1;
272         }
273         Py_DECREF(tmp_call_result_2);
274     }
275     {
276         PyObject *tmp_called_name_3;
277         PyObject *tmp_mvar_value_3;
278         PyObject *tmp_call_result_3;
279         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
280  
281         if (unlikely(tmp_mvar_value_3 == NULL)) {
282             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
283         }
284  
285         if (tmp_mvar_value_3 == NULL) {
286  
287             exception_type = PyExc_NameError;
288             Py_INCREF(exception_type);
289             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 33, 0);
290             exception_tb = NULL;
291             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
292             CHAIN_EXCEPTION(exception_value);
293  
294             exception_lineno = 33;
295  
296             goto frame_exception_exit_1;
297         }
298  
299         tmp_called_name_3 = tmp_mvar_value_3;
300         frame_4fd5ed4d49a2986f4329563767ccb5ff->m_frame.f_lineno = 33;
301         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6(tmp_called_name_3, &PyTuple_GET_ITEM(const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0));
302  
303         if (tmp_call_result_3 == NULL) {
304             assert(ERROR_OCCURRED());
305  
306             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
307  
308  
309             exception_lineno = 33;
310  
311             goto frame_exception_exit_1;
312         }
313         Py_DECREF(tmp_call_result_3);
314     }
315  
316 #if 0
317     RESTORE_FRAME_EXCEPTION(frame_4fd5ed4d49a2986f4329563767ccb5ff);
318 #endif
319  
320     // Put the previous frame back on top.
321     popFrameStack();
322  
323     goto frame_no_exception_1;
324  
325     frame_exception_exit_1:;
326  
327 #if 0
328     RESTORE_FRAME_EXCEPTION(frame_4fd5ed4d49a2986f4329563767ccb5ff);
329 #endif
330  
331     if (exception_tb == NULL) {
332         exception_tb = MAKE_TRACEBACK(frame_4fd5ed4d49a2986f4329563767ccb5ff, exception_lineno);
333     } else if (exception_tb->tb_frame != &frame_4fd5ed4d49a2986f4329563767ccb5ff->m_frame) {
334         exception_tb = ADD_TRACEBACK(exception_tb, frame_4fd5ed4d49a2986f4329563767ccb5ff, exception_lineno);
335     }
336  
337     // Attachs locals to frame if any.
338     Nuitka_Frame_AttachLocals(
339         frame_4fd5ed4d49a2986f4329563767ccb5ff,
340         type_description_1
341     );
342  
343  
344     // Release cached frame.
345     if (frame_4fd5ed4d49a2986f4329563767ccb5ff == cache_frame_4fd5ed4d49a2986f4329563767ccb5ff) {
346 #if _DEBUG_REFCOUNTS
347         count_active_frame_cache_instances -= 1;
348         count_released_frame_cache_instances += 1;
349 #endif
350  
351         Py_DECREF(frame_4fd5ed4d49a2986f4329563767ccb5ff);
352     }
353     cache_frame_4fd5ed4d49a2986f4329563767ccb5ff = NULL;
354  
355     assertFrameObject(frame_4fd5ed4d49a2986f4329563767ccb5ff);
356  
357     // Put the previous frame back on top.
358     popFrameStack();
359  
360     // Return the error.
361     goto function_exception_exit;
362  
363     frame_no_exception_1:;
364     tmp_return_value = Py_None;
365     Py_INCREF(tmp_return_value);
366     goto function_return_exit;
367  
368     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
369     return NULL;
370  
371 function_exception_exit:
372     assert(exception_type);
373     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
374  
375     return NULL;
376  
377 function_return_exit:
378    // Function cleanup code if any.
379  
380  
381    // Actual function exit with return value, making sure we did not make
382    // the error status worse despite non-NULL return.
383    CHECK_OBJECT(tmp_return_value);
384    assert(had_error || !ERROR_OCCURRED());
385    return tmp_return_value;
386 }
387  
388  
389 108
390 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() { 109 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() {
391     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 110     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 392         impl___main__$$$function_1_calledRepeatedly, n 111         NULL,
393         const_str_plain_calledRepeatedly, 112         const_str_plain_calledRepeatedly,
394 #if PYTHON_VERSION >= 300 113 #if PYTHON_VERSION >= 300
395         NULL, 114         NULL,
396 #endif 115 #endif
n 397         codeobj_4fd5ed4d49a2986f4329563767ccb5ff, n 116         codeobj_c2db4bbc7b237b912bc6ed5a8c0ed0ce,
398         NULL, 117         NULL,
399 #if PYTHON_VERSION >= 300 118 #if PYTHON_VERSION >= 300
400         NULL, 119         NULL,
401         NULL, 120         NULL,
402 #endif 121 #endif
437 #ifdef _NUITKA_PLUGIN_DILL_ENABLED 156 #ifdef _NUITKA_PLUGIN_DILL_ENABLED
438 // Provide a way to create find a function via its C code and create it back 157 // Provide a way to create find a function via its C code and create it back
439 // in another process, useful for multiprocessing extensions like dill 158 // in another process, useful for multiprocessing extensions like dill
440 159
441 function_impl_code functable___main__[] = { 160 function_impl_code functable___main__[] = {
n 442     impl___main__$$$function_1_calledRepeatedly, n 161     NULL,
443     NULL 162     NULL
444 }; 163 };
445 164
446 static char const *_reduce_compiled_function_argnames[] = { 165 static char const *_reduce_compiled_function_argnames[] = {
447     "func", 166     "func",
1069 788
1070         if (tmp_mvar_value_2 == NULL) { 789         if (tmp_mvar_value_2 == NULL) {
1071 790
1072             exception_type = PyExc_NameError; 791             exception_type = PyExc_NameError;
1073             Py_INCREF(exception_type); 792             Py_INCREF(exception_type);
t 1074             exception_value = UNSTREAM_STRING(&constant_bin[ 33 ], 38, 0); t 793             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 38, 0);
1075             exception_tb = NULL; 794             exception_tb = NULL;
1076             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 795             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
1077             CHAIN_EXCEPTION(exception_value); 796             CHAIN_EXCEPTION(exception_value);
1078 797
1079             exception_lineno = 40; 798             exception_lineno = 40;