Construct FunctionCreationClosure

Performance Diagrams

Construct FunctionCreationClosure 001000000010000000200000002000000030000000300000004000000040000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)4565458988.95192307692307257.0CPython 2.712251137242.31730769230768437.80344318643495Nuitka (master)12301279395.6826923076923437.53203871457816Nuitka (develop)12302704549.0480769230769437.52432559239725Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)5609019588.95192307692307257.0CPython 3.513752193242.31730769230768443.52763906556083Nuitka (master)13851690395.6826923076923443.0892872391306Nuitka (develop)13851764549.0480769230769443.0889612188972Nuitka (factory)Construct FunctionCreationClosureTicks

Source Code with Construct

module_var = None

def calledRepeatedly():
    # We measure making a local function that will remain unused.
    closure_var = module_var

# construct_begin
    def empty():
        return closure_var

# construct_alternative



    return empty, closure_var


import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Source Code without Construct

module_var = None

def calledRepeatedly():
    # We measure making a local function that will remain unused.
    closure_var = module_var

# construct_begin



# construct_alternative
    empty = 1
# construct_end

    return empty, closure_var


import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
23 def calledRepeatedly(): 23 def calledRepeatedly():
24     # We measure making a local function that will remain unused. 24     # We measure making a local function that will remain unused.
25     closure_var = module_var 25     closure_var = module_var
26 26
27 # construct_begin 27 # construct_begin
n 28     def empty(): n 28  
29         return closure_var 29  
30 30
31 # construct_alternative 31 # construct_alternative
t 32   t 32     empty = 1
33   33 # construct_end
34 34
35     return empty, closure_var 35     return empty, closure_var
36 36
37 37
38 import itertools 38 import itertools

Context Diff of Generated Code


Construct
Baseline
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. */
34 static PyObject *const_str_plain_itertools; 34 static PyObject *const_str_plain_itertools;
n 35 static PyObject *const_tuple_str_plain_closure_var_tuple; n
36 static PyObject *const_str_plain_module_var; 35 static PyObject *const_str_plain_module_var;
n n 36 extern PyObject *const_int_pos_1;
37 extern PyObject *const_str_plain___file__; 37 extern PyObject *const_str_plain___file__;
38 static PyObject *const_str_plain_closure_var; 38 static PyObject *const_str_plain_closure_var;
39 static PyObject *const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d; 39 static PyObject *const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d;
40 extern PyObject *const_int_0; 40 extern PyObject *const_int_0;
41 static PyObject *const_tuple_str_plain_closure_var_str_plain_empty_tuple; 41 static PyObject *const_tuple_str_plain_closure_var_str_plain_empty_tuple;
42 static PyObject *const_str_plain_empty; 42 static PyObject *const_str_plain_empty;
n 43 static PyObject *const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd; n
44 extern PyObject *const_str_plain_print; 43 extern PyObject *const_str_plain_print;
45 static PyObject *const_int_pos_50000; 44 static PyObject *const_int_pos_50000;
46 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 45 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
47 static PyObject *const_str_plain_calledRepeatedly; 46 static PyObject *const_str_plain_calledRepeatedly;
48 static PyObject *const_str_angle_module; 47 static PyObject *const_str_angle_module;
61 60
62 /* Function to create module private constants. */ 61 /* Function to create module private constants. */
63 static void createModuleConstants( void ) 62 static void createModuleConstants( void )
64 { 63 {
65     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 70 ], 9, 1); 64     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 70 ], 9, 1);
n 66     const_tuple_str_plain_closure_var_tuple = PyTuple_New(1); n 65     const_str_plain_module_var = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 10, 1);
67     const_str_plain_closure_var = UNSTREAM_STRING_ASCII(&constant_bin[ 79 ], 11, 1); 66     const_str_plain_closure_var = UNSTREAM_STRING_ASCII(&constant_bin[ 79 ], 11, 1);
n 68     PyTuple_SET_ITEM(const_tuple_str_plain_closure_var_tuple, 0, const_str_plain_closure_var); Py_INCREF(const_str_plain_closure_var); n
69     const_str_plain_module_var = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 10, 1);
70     const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d = UNSTREAM_STRING_ASCII(&constant_bin[ 90 ], 48, 0); 67     const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d = UNSTREAM_STRING_ASCII(&constant_bin[ 90 ], 48, 0);
71     const_tuple_str_plain_closure_var_str_plain_empty_tuple = PyTuple_New(2); 68     const_tuple_str_plain_closure_var_str_plain_empty_tuple = PyTuple_New(2);
72     PyTuple_SET_ITEM(const_tuple_str_plain_closure_var_str_plain_empty_tuple, 0, const_str_plain_closure_var); Py_INCREF(const_str_plain_closure_var); 69     PyTuple_SET_ITEM(const_tuple_str_plain_closure_var_str_plain_empty_tuple, 0, const_str_plain_closure_var); Py_INCREF(const_str_plain_closure_var);
73     const_str_plain_empty = UNSTREAM_STRING_ASCII(&constant_bin[ 138 ], 5, 1); 70     const_str_plain_empty = UNSTREAM_STRING_ASCII(&constant_bin[ 138 ], 5, 1);
74     PyTuple_SET_ITEM(const_tuple_str_plain_closure_var_str_plain_empty_tuple, 1, const_str_plain_empty); Py_INCREF(const_str_plain_empty); 71     PyTuple_SET_ITEM(const_tuple_str_plain_closure_var_str_plain_empty_tuple, 1, const_str_plain_empty); Py_INCREF(const_str_plain_empty);
n 75     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING_ASCII(&constant_bin[ 143 ], 31, 0); n
76     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 72     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
77     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1); 73     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New(1);
n 78     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 174 ], 3, 0); n 74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 143 ], 3, 0);
79     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352); 75     PyTuple_SET_ITEM(const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352);
80     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 38 ], 16, 1); 76     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 38 ], 16, 1);
n 81     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 177 ], 8, 0); n 77     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 146 ], 8, 0);
82     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 185 ], 4, 1); 78     const_str_plain_None = UNSTREAM_STRING_ASCII(&constant_bin[ 154 ], 4, 1);
83     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 189 ], 1, 1); 79     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 158 ], 1, 1);
84     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 190 ], 6, 1); 80     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 159 ], 6, 1);
85     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 81     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
86     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 82     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
87     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 83     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
88 84
89     constants_created = true; 85     constants_created = true;
101 #endif 97 #endif
102 98
103 // The module code objects. 99 // The module code objects.
104 static PyCodeObject *codeobj_61c6f29e8e9670a57211e20ebbb12f5e; 100 static PyCodeObject *codeobj_61c6f29e8e9670a57211e20ebbb12f5e;
105 static PyCodeObject *codeobj_11355a67c34588f778039ca7ecf5548a; 101 static PyCodeObject *codeobj_11355a67c34588f778039ca7ecf5548a;
n 106 static PyCodeObject *codeobj_67d9b63d5d5577be86adb7abb49ccf64; n
107 /* For use in "MainProgram.c". */ 102 /* For use in "MainProgram.c". */
108 PyCodeObject *codeobj_main = NULL; 103 PyCodeObject *codeobj_main = NULL;
109 104
110 static void createModuleCodeObjects(void) 105 static void createModuleCodeObjects(void)
111 { 106 {
112     module_filename_obj = const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d; 107     module_filename_obj = const_str_digest_c24a7c9b4cc3cf345cebd3dbb9d3ff4d;
113     codeobj_61c6f29e8e9670a57211e20ebbb12f5e = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE); 108     codeobj_61c6f29e8e9670a57211e20ebbb12f5e = MAKE_CODEOBJ(module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE);
114     codeobj_11355a67c34588f778039ca7ecf5548a = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 23, const_tuple_str_plain_closure_var_str_plain_empty_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE); 109     codeobj_11355a67c34588f778039ca7ecf5548a = MAKE_CODEOBJ(module_filename_obj, const_str_plain_calledRepeatedly, 23, const_tuple_str_plain_closure_var_str_plain_empty_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE);
n 115     codeobj_67d9b63d5d5577be86adb7abb49ccf64 = MAKE_CODEOBJ(module_filename_obj, const_str_plain_empty, 28, const_tuple_str_plain_closure_var_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS); n
116 } 110 }
117 111
118 // The module function declarations. 112 // The module function declarations.
119 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(); 113 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly();
n 120   n
121  
122 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty();
123 114
124 115
125 // The module function definitions. 116 // The module function definitions.
126 static PyObject *impl___main__$$$function_1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { 117 static PyObject *impl___main__$$$function_1_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) {
127     // Preserve error status for checks 118     // Preserve error status for checks
128 #ifndef __NUITKA_NO_ASSERT__ 119 #ifndef __NUITKA_NO_ASSERT__
129     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 120     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
130 #endif 121 #endif
131 122
132     // Local variable declarations. 123     // Local variable declarations.
n 133     struct Nuitka_CellObject *var_closure_var = PyCell_EMPTY(); n
134     PyObject *var_empty = NULL; 124     PyObject *var_closure_var = NULL;
135     struct Nuitka_FrameObject *frame_11355a67c34588f778039ca7ecf5548a; 125     struct Nuitka_FrameObject *frame_11355a67c34588f778039ca7ecf5548a;
136     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 126     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
137     PyObject *exception_type = NULL; 127     PyObject *exception_type = NULL;
138     PyObject *exception_value = NULL; 128     PyObject *exception_value = NULL;
139     PyTracebackObject *exception_tb = NULL; 129     PyTracebackObject *exception_tb = NULL;
174             exception_tb = NULL; 164             exception_tb = NULL;
175             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 165             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
176             CHAIN_EXCEPTION(exception_value); 166             CHAIN_EXCEPTION(exception_value);
177 167
178             exception_lineno = 25; 168             exception_lineno = 25;
n 179             type_description_1 = "co"; n 169             type_description_1 = "oN";
180             goto frame_exception_exit_1; 170             goto frame_exception_exit_1;
181         } 171         }
182 172
183         tmp_assign_source_1 = tmp_mvar_value_1; 173         tmp_assign_source_1 = tmp_mvar_value_1;
n 184         assert(PyCell_GET(var_closure_var) == NULL); n 174         assert(var_closure_var == NULL);
185         Py_INCREF(tmp_assign_source_1); 175         Py_INCREF(tmp_assign_source_1);
n 186         PyCell_SET(var_closure_var, tmp_assign_source_1); n 176         var_closure_var = tmp_assign_source_1;
187  
188     } 177     }
189 178
190 #if 0 179 #if 0
191     RESTORE_FRAME_EXCEPTION(frame_11355a67c34588f778039ca7ecf5548a); 180     RESTORE_FRAME_EXCEPTION(frame_11355a67c34588f778039ca7ecf5548a);
192 #endif 181 #endif
212     // Attachs locals to frame if any. 201     // Attachs locals to frame if any.
213     Nuitka_Frame_AttachLocals( 202     Nuitka_Frame_AttachLocals(
214         (struct Nuitka_FrameObject *)frame_11355a67c34588f778039ca7ecf5548a, 203         (struct Nuitka_FrameObject *)frame_11355a67c34588f778039ca7ecf5548a,
215         type_description_1, 204         type_description_1,
216         var_closure_var, 205         var_closure_var,
n 217         var_empty n 206         NULL
218     ); 207     );
219 208
220 209
221     // Release cached frame. 210     // Release cached frame.
222     if (frame_11355a67c34588f778039ca7ecf5548a == cache_frame_11355a67c34588f778039ca7ecf5548a) { 211     if (frame_11355a67c34588f778039ca7ecf5548a == cache_frame_11355a67c34588f778039ca7ecf5548a) {
232     // Return the error. 221     // Return the error.
233     goto try_except_handler_1; 222     goto try_except_handler_1;
234 223
235     frame_no_exception_1:; 224     frame_no_exception_1:;
236     { 225     {
n 237         PyObject *tmp_assign_source_2; n
238         tmp_assign_source_2 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty();
239  
240         ((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0] = var_closure_var;
241         Py_INCREF(((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0]);
242  
243  
244         assert(var_empty == NULL);
245         var_empty = tmp_assign_source_2;
246     }
247     {
248         PyObject *tmp_tuple_element_1; 226         PyObject *tmp_tuple_element_1;
n 249         CHECK_OBJECT(var_empty); n
250         tmp_tuple_element_1 = var_empty; 227         tmp_tuple_element_1 = const_int_pos_1;
251         tmp_return_value = PyTuple_New(2); 228         tmp_return_value = PyTuple_New(2);
252         Py_INCREF(tmp_tuple_element_1); 229         Py_INCREF(tmp_tuple_element_1);
253         PyTuple_SET_ITEM(tmp_return_value, 0, tmp_tuple_element_1); 230         PyTuple_SET_ITEM(tmp_return_value, 0, tmp_tuple_element_1);
n 254         CHECK_OBJECT(PyCell_GET(var_closure_var)); n 231         CHECK_OBJECT(var_closure_var);
255         tmp_tuple_element_1 = PyCell_GET(var_closure_var); 232         tmp_tuple_element_1 = var_closure_var;
256         Py_INCREF(tmp_tuple_element_1); 233         Py_INCREF(tmp_tuple_element_1);
257         PyTuple_SET_ITEM(tmp_return_value, 1, tmp_tuple_element_1); 234         PyTuple_SET_ITEM(tmp_return_value, 1, tmp_tuple_element_1);
258         goto try_return_handler_1; 235         goto try_return_handler_1;
259     } 236     }
260     // tried codes exits in all cases 237     // tried codes exits in all cases
263     // Return handler code: 240     // Return handler code:
264     try_return_handler_1:; 241     try_return_handler_1:;
265     CHECK_OBJECT((PyObject *)var_closure_var); 242     CHECK_OBJECT((PyObject *)var_closure_var);
266     Py_DECREF(var_closure_var); 243     Py_DECREF(var_closure_var);
267     var_closure_var = NULL; 244     var_closure_var = NULL;
n 268   n
269     CHECK_OBJECT((PyObject *)var_empty);
270     Py_DECREF(var_empty);
271     var_empty = NULL;
272 245
273     goto function_return_exit; 246     goto function_return_exit;
274     // Exception handler code: 247     // Exception handler code:
275     try_except_handler_1:; 248     try_except_handler_1:;
276     exception_keeper_type_1 = exception_type; 249     exception_keeper_type_1 = exception_type;
311    assert(had_error || !ERROR_OCCURRED()); 284    assert(had_error || !ERROR_OCCURRED());
312    return tmp_return_value; 285    return tmp_return_value;
313 } 286 }
314 287
315 288
n 316 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
317     // Preserve error status for checks
318 #ifndef __NUITKA_NO_ASSERT__
319     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
320 #endif
321  
322     // Local variable declarations.
323     struct Nuitka_FrameObject *frame_67d9b63d5d5577be86adb7abb49ccf64;
324     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
325     PyObject *tmp_return_value = NULL;
326     PyObject *exception_type = NULL;
327     PyObject *exception_value = NULL;
328     PyTracebackObject *exception_tb = NULL;
329     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
330     static struct Nuitka_FrameObject *cache_frame_67d9b63d5d5577be86adb7abb49ccf64 = NULL;
331  
332     // Actual function body.
333     MAKE_OR_REUSE_FRAME(cache_frame_67d9b63d5d5577be86adb7abb49ccf64, codeobj_67d9b63d5d5577be86adb7abb49ccf64, module___main__, sizeof(void *));
334     frame_67d9b63d5d5577be86adb7abb49ccf64 = cache_frame_67d9b63d5d5577be86adb7abb49ccf64;
335  
336     // Push the new frame as the currently active one.
337     pushFrameStack(frame_67d9b63d5d5577be86adb7abb49ccf64);
338  
339     // Mark the frame object as in use, ref count 1 will be up for reuse.
340     assert(Py_REFCNT(frame_67d9b63d5d5577be86adb7abb49ccf64) == 2); // Frame stack
341  
342     // Framed code:
343     if (PyCell_GET(self->m_closure[0]) == NULL) {
344  
345         exception_type = PyExc_NameError;
346         Py_INCREF(exception_type);
347         exception_value = PyUnicode_FromFormat("free variable '%s' referenced before assignment in enclosing scope", "closure_var");
348         exception_tb = NULL;
349         NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
350         CHAIN_EXCEPTION(exception_value);
351  
352         exception_lineno = 29;
353         type_description_1 = "c";
354         goto frame_exception_exit_1;
355     }
356  
357     tmp_return_value = PyCell_GET(self->m_closure[0]);
358     Py_INCREF(tmp_return_value);
359     goto frame_return_exit_1;
360  
361 #if 0
362     RESTORE_FRAME_EXCEPTION(frame_67d9b63d5d5577be86adb7abb49ccf64);
363 #endif
364  
365     // Put the previous frame back on top.
366     popFrameStack();
367  
368     goto frame_no_exception_1;
369  
370     frame_return_exit_1:;
371 #if 0
372     RESTORE_FRAME_EXCEPTION(frame_67d9b63d5d5577be86adb7abb49ccf64);
373 #endif
374  
375     // Put the previous frame back on top.
376     popFrameStack();
377  
378     goto function_return_exit;
379  
380     frame_exception_exit_1:;
381  
382 #if 0
383     RESTORE_FRAME_EXCEPTION(frame_67d9b63d5d5577be86adb7abb49ccf64);
384 #endif
385  
386     if (exception_tb == NULL) {
387         exception_tb = MAKE_TRACEBACK(frame_67d9b63d5d5577be86adb7abb49ccf64, exception_lineno);
388     }
389     else if (exception_tb->tb_frame != &frame_67d9b63d5d5577be86adb7abb49ccf64->m_frame) {
390         exception_tb = ADD_TRACEBACK(exception_tb, frame_67d9b63d5d5577be86adb7abb49ccf64, exception_lineno);
391     }
392  
393     // Attachs locals to frame if any.
394     Nuitka_Frame_AttachLocals(
395         (struct Nuitka_FrameObject *)frame_67d9b63d5d5577be86adb7abb49ccf64,
396         type_description_1,
397         self->m_closure[0]
398     );
399  
400  
401     // Release cached frame.
402     if (frame_67d9b63d5d5577be86adb7abb49ccf64 == cache_frame_67d9b63d5d5577be86adb7abb49ccf64) {
403         Py_DECREF(frame_67d9b63d5d5577be86adb7abb49ccf64);
404     }
405     cache_frame_67d9b63d5d5577be86adb7abb49ccf64 = NULL;
406  
407     assertFrameObject(frame_67d9b63d5d5577be86adb7abb49ccf64);
408  
409     // Put the previous frame back on top.
410     popFrameStack();
411  
412     // Return the error.
413     goto function_exception_exit;
414  
415     frame_no_exception_1:;
416  
417     // Return statement must have exited already.
418     NUITKA_CANNOT_GET_HERE(__main__$$$function_1_calledRepeatedly$$$function_1_empty);
419     return NULL;
420  
421 function_exception_exit:
422     assert(exception_type);
423     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
424  
425     return NULL;
426  
427 function_return_exit:
428    // Function cleanup code if any.
429  
430  
431    // Actual function exit with return value, making sure we did not make
432    // the error status worse despite non-NULL return.
433    CHECK_OBJECT(tmp_return_value);
434    assert(had_error || !ERROR_OCCURRED());
435    return tmp_return_value;
436 }
437  
438  
439 289
440 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() { 290 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly() {
441     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 291     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
442         impl___main__$$$function_1_calledRepeatedly, 292         impl___main__$$$function_1_calledRepeatedly,
443         const_str_plain_calledRepeatedly, 293         const_str_plain_calledRepeatedly,
451         NULL, 301         NULL,
452 #endif 302 #endif
453         module___main__, 303         module___main__,
454         NULL, 304         NULL,
455         0 305         0
t 456     ); t
457  
458     return (PyObject *)result;
459 }
460  
461  
462  
463 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty() {
464     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
465         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
466         const_str_plain_empty,
467 #if PYTHON_VERSION >= 300
468         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
469 #endif
470         codeobj_67d9b63d5d5577be86adb7abb49ccf64,
471         NULL,
472 #if PYTHON_VERSION >= 300
473         NULL,
474         NULL,
475 #endif
476         module___main__,
477         NULL,
478         1
479     ); 306     );
480 307
481     return (PyObject *)result; 308     return (PyObject *)result;
482 } 309 }
483 310