Construct FunctionCreationClosure

Performance Diagrams

Construct FunctionCreationClosure 001000000010000000200000002000000030000000300000004000000040000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)4565458988.95192307692307257.0CPython 2.712251898242.31730769230768437.7993241085545Nuitka (master)12301988395.6826923076923437.5282010979983Nuitka (develop)12302000549.0480769230769437.5281361453905Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)5609019588.95192307692307257.0CPython 3.513752243242.31730769230768443.52741878161936Nuitka (master)13851711395.6826923076923443.0891947198752Nuitka (develop)13851817549.0480769230769443.0887277179193Nuitka (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
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_digest_06369301fd94008aa25602b95a7b68ed; 34 static PyObject *const_str_digest_06369301fd94008aa25602b95a7b68ed;
35 static PyObject *const_str_plain_itertools; 35 static PyObject *const_str_plain_itertools;
n 36 static PyObject *const_tuple_str_plain_closure_var_tuple; n
37 static PyObject *const_str_plain_module_var; 36 static PyObject *const_str_plain_module_var;
n n 37 extern PyObject *const_int_pos_1;
38 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
39 static PyObject *const_str_plain_closure_var; 39 static PyObject *const_str_plain_closure_var;
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;
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_digest_06369301fd94008aa25602b95a7b68ed = UNSTREAM_STRING_ASCII( &constant_bin[ 70 ], 48, 0 ); 64     const_str_digest_06369301fd94008aa25602b95a7b68ed = UNSTREAM_STRING_ASCII( &constant_bin[ 70 ], 48, 0 );
66     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 118 ], 9, 1 ); 65     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 118 ], 9, 1 );
n 67     const_tuple_str_plain_closure_var_tuple = PyTuple_New( 1 ); n 66     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 10, 1 );
68     const_str_plain_closure_var = UNSTREAM_STRING_ASCII( &constant_bin[ 127 ], 11, 1 ); 67     const_str_plain_closure_var = UNSTREAM_STRING_ASCII( &constant_bin[ 127 ], 11, 1 );
n 69     PyTuple_SET_ITEM( const_tuple_str_plain_closure_var_tuple, 0, const_str_plain_closure_var ); Py_INCREF(const_str_plain_closure_var); n
70     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 10, 1 );
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_951563f4baaf8f160796863ef6bf47b4; 100 static PyCodeObject *codeobj_951563f4baaf8f160796863ef6bf47b4;
105 static PyCodeObject *codeobj_592a26c41a1c6ae71c4116a119c24141; 101 static PyCodeObject *codeobj_592a26c41a1c6ae71c4116a119c24141;
n 106 static PyCodeObject *codeobj_cf10b6884cb5105ff5cd49b1f9d99b85; 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_06369301fd94008aa25602b95a7b68ed; 107     module_filename_obj = const_str_digest_06369301fd94008aa25602b95a7b68ed;
113     codeobj_951563f4baaf8f160796863ef6bf47b4 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 108     codeobj_951563f4baaf8f160796863ef6bf47b4 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
114     codeobj_592a26c41a1c6ae71c4116a119c24141 = 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_592a26c41a1c6ae71c4116a119c24141 = 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_cf10b6884cb5105ff5cd49b1f9d99b85 = 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 { 118 {
129 #ifndef __NUITKA_NO_ASSERT__ 120 #ifndef __NUITKA_NO_ASSERT__
130     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 121     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
131 #endif 122 #endif
132 123
133     // Local variable declarations. 124     // Local variable declarations.
n 134     struct Nuitka_CellObject *var_closure_var = PyCell_EMPTY(); n
135     PyObject *var_empty = NULL; 125     PyObject *var_closure_var = NULL;
136     struct Nuitka_FrameObject *frame_592a26c41a1c6ae71c4116a119c24141; 126     struct Nuitka_FrameObject *frame_592a26c41a1c6ae71c4116a119c24141;
137     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 127     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
138     PyObject *exception_type = NULL; 128     PyObject *exception_type = NULL;
139     PyObject *exception_value = NULL; 129     PyObject *exception_value = NULL;
140     PyTracebackObject *exception_tb = NULL; 130     PyTracebackObject *exception_tb = NULL;
176             exception_tb = NULL; 166             exception_tb = NULL;
177             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 167             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
178             CHAIN_EXCEPTION( exception_value ); 168             CHAIN_EXCEPTION( exception_value );
179 169
180             exception_lineno = 25; 170             exception_lineno = 25;
n 181             type_description_1 = "co"; n 171             type_description_1 = "oN";
182             goto frame_exception_exit_1; 172             goto frame_exception_exit_1;
183         } 173         }
184 174
185         tmp_assign_source_1 = tmp_mvar_value_1; 175         tmp_assign_source_1 = tmp_mvar_value_1;
n 186         assert(PyCell_GET(var_closure_var) == NULL); n 176         assert(var_closure_var == NULL);
187         Py_INCREF(tmp_assign_source_1); 177         Py_INCREF(tmp_assign_source_1);
n 188         PyCell_SET(var_closure_var, tmp_assign_source_1); n 178         var_closure_var = tmp_assign_source_1;
189  
190     } 179     }
191 180
192 #if 0 181 #if 0
193     RESTORE_FRAME_EXCEPTION(frame_592a26c41a1c6ae71c4116a119c24141); 182     RESTORE_FRAME_EXCEPTION(frame_592a26c41a1c6ae71c4116a119c24141);
194 #endif 183 #endif
214     // Attachs locals to frame if any. 203     // Attachs locals to frame if any.
215     Nuitka_Frame_AttachLocals( 204     Nuitka_Frame_AttachLocals(
216         (struct Nuitka_FrameObject *)frame_592a26c41a1c6ae71c4116a119c24141, 205         (struct Nuitka_FrameObject *)frame_592a26c41a1c6ae71c4116a119c24141,
217         type_description_1, 206         type_description_1,
218         var_closure_var, 207         var_closure_var,
n 219         var_empty n 208         NULL
220     ); 209     );
221 210
222 211
223     // Release cached frame. 212     // Release cached frame.
224     if (frame_592a26c41a1c6ae71c4116a119c24141 == cache_frame_592a26c41a1c6ae71c4116a119c24141) { 213     if (frame_592a26c41a1c6ae71c4116a119c24141 == cache_frame_592a26c41a1c6ae71c4116a119c24141) {
234     // Return the error. 223     // Return the error.
235     goto try_except_handler_1; 224     goto try_except_handler_1;
236 225
237     frame_no_exception_1:; 226     frame_no_exception_1:;
238     { 227     {
n 239         PyObject *tmp_assign_source_2; n
240         tmp_assign_source_2 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
241  
242         ((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0] = var_closure_var;
243         Py_INCREF(((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0]);
244  
245  
246         assert(var_empty == NULL);
247         var_empty = tmp_assign_source_2;
248     }
249     {
250         PyObject *tmp_tuple_element_1; 228         PyObject *tmp_tuple_element_1;
n 251         CHECK_OBJECT(var_empty); n
252         tmp_tuple_element_1 = var_empty; 229         tmp_tuple_element_1 = const_int_pos_1;
253         tmp_return_value = PyTuple_New( 2 ); 230         tmp_return_value = PyTuple_New( 2 );
254         Py_INCREF(tmp_tuple_element_1); 231         Py_INCREF(tmp_tuple_element_1);
255         PyTuple_SET_ITEM( tmp_return_value, 0, tmp_tuple_element_1 ); 232         PyTuple_SET_ITEM( tmp_return_value, 0, tmp_tuple_element_1 );
n 256         CHECK_OBJECT(PyCell_GET( var_closure_var )); n 233         CHECK_OBJECT(var_closure_var);
257         tmp_tuple_element_1 = PyCell_GET( var_closure_var ); 234         tmp_tuple_element_1 = var_closure_var;
258         Py_INCREF(tmp_tuple_element_1); 235         Py_INCREF(tmp_tuple_element_1);
259         PyTuple_SET_ITEM( tmp_return_value, 1, tmp_tuple_element_1 ); 236         PyTuple_SET_ITEM( tmp_return_value, 1, tmp_tuple_element_1 );
260         goto try_return_handler_1; 237         goto try_return_handler_1;
261     } 238     }
262     // tried codes exits in all cases 239     // tried codes exits in all cases
265     // Return handler code: 242     // Return handler code:
266     try_return_handler_1:; 243     try_return_handler_1:;
267     CHECK_OBJECT((PyObject *)var_closure_var); 244     CHECK_OBJECT((PyObject *)var_closure_var);
268     Py_DECREF(var_closure_var); 245     Py_DECREF(var_closure_var);
269     var_closure_var = NULL; 246     var_closure_var = NULL;
n 270   n
271     CHECK_OBJECT((PyObject *)var_empty);
272     Py_DECREF(var_empty);
273     var_empty = NULL;
274 247
275     goto function_return_exit; 248     goto function_return_exit;
276     // Exception handler code: 249     // Exception handler code:
277     try_except_handler_1:; 250     try_except_handler_1:;
278     exception_keeper_type_1 = exception_type; 251     exception_keeper_type_1 = exception_type;
313    assert(had_error || !ERROR_OCCURRED()); 286    assert(had_error || !ERROR_OCCURRED());
314    return tmp_return_value; 287    return tmp_return_value;
315 } 288 }
316 289
317 290
n 318 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
319 {
320     // Preserve error status for checks
321 #ifndef __NUITKA_NO_ASSERT__
322     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
323 #endif
324  
325     // Local variable declarations.
326     struct Nuitka_FrameObject *frame_cf10b6884cb5105ff5cd49b1f9d99b85;
327     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
328     PyObject *tmp_return_value = NULL;
329     PyObject *exception_type = NULL;
330     PyObject *exception_value = NULL;
331     PyTracebackObject *exception_tb = NULL;
332     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
333     static struct Nuitka_FrameObject *cache_frame_cf10b6884cb5105ff5cd49b1f9d99b85 = NULL;
334  
335     // Actual function body.
336     MAKE_OR_REUSE_FRAME(cache_frame_cf10b6884cb5105ff5cd49b1f9d99b85, codeobj_cf10b6884cb5105ff5cd49b1f9d99b85, module___main__, sizeof(void *));
337     frame_cf10b6884cb5105ff5cd49b1f9d99b85 = cache_frame_cf10b6884cb5105ff5cd49b1f9d99b85;
338  
339     // Push the new frame as the currently active one.
340     pushFrameStack(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
341  
342     // Mark the frame object as in use, ref count 1 will be up for reuse.
343     assert(Py_REFCNT(frame_cf10b6884cb5105ff5cd49b1f9d99b85) == 2); // Frame stack
344  
345     // Framed code:
346     if ( PyCell_GET( self->m_closure[0] ) == NULL )
347     {
348  
349         exception_type = PyExc_NameError;
350         Py_INCREF(exception_type);
351         exception_value = PyUnicode_FromFormat( "free variable '%s' referenced before assignment in enclosing scope", "closure_var" );
352         exception_tb = NULL;
353         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
354         CHAIN_EXCEPTION( exception_value );
355  
356         exception_lineno = 29;
357         type_description_1 = "c";
358         goto frame_exception_exit_1;
359     }
360  
361     tmp_return_value = PyCell_GET( self->m_closure[0] );
362     Py_INCREF(tmp_return_value);
363     goto frame_return_exit_1;
364  
365 #if 0
366     RESTORE_FRAME_EXCEPTION(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
367 #endif
368  
369     // Put the previous frame back on top.
370     popFrameStack();
371  
372     goto frame_no_exception_1;
373  
374     frame_return_exit_1:;
375 #if 0
376     RESTORE_FRAME_EXCEPTION(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
377 #endif
378  
379     // Put the previous frame back on top.
380     popFrameStack();
381  
382     goto function_return_exit;
383  
384     frame_exception_exit_1:;
385  
386 #if 0
387     RESTORE_FRAME_EXCEPTION(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
388 #endif
389  
390     if (exception_tb == NULL) {
391         exception_tb = MAKE_TRACEBACK( frame_cf10b6884cb5105ff5cd49b1f9d99b85, exception_lineno );
392     }
393     else if (exception_tb->tb_frame != &frame_cf10b6884cb5105ff5cd49b1f9d99b85->m_frame) {
394         exception_tb = ADD_TRACEBACK(exception_tb, frame_cf10b6884cb5105ff5cd49b1f9d99b85, exception_lineno);
395     }
396  
397     // Attachs locals to frame if any.
398     Nuitka_Frame_AttachLocals(
399         (struct Nuitka_FrameObject *)frame_cf10b6884cb5105ff5cd49b1f9d99b85,
400         type_description_1,
401         self->m_closure[0]
402     );
403  
404  
405     // Release cached frame.
406     if (frame_cf10b6884cb5105ff5cd49b1f9d99b85 == cache_frame_cf10b6884cb5105ff5cd49b1f9d99b85) {
407         Py_DECREF(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
408     }
409     cache_frame_cf10b6884cb5105ff5cd49b1f9d99b85 = NULL;
410  
411     assertFrameObject(frame_cf10b6884cb5105ff5cd49b1f9d99b85);
412  
413     // Put the previous frame back on top.
414     popFrameStack();
415  
416     // Return the error.
417     goto function_exception_exit;
418  
419     frame_no_exception_1:;
420  
421     // Return statement must have exited already.
422     NUITKA_CANNOT_GET_HERE(__main__$$$function_1_calledRepeatedly$$$function_1_empty);
423     return NULL;
424  
425 function_exception_exit:
426     assert(exception_type);
427     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
428  
429     return NULL;
430  
431 function_return_exit:
432    // Function cleanup code if any.
433  
434  
435    // Actual function exit with return value, making sure we did not make
436    // the error status worse despite non-NULL return.
437    CHECK_OBJECT(tmp_return_value);
438    assert(had_error || !ERROR_OCCURRED());
439    return tmp_return_value;
440 }
441  
442  
443 291
444 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 292 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
445 { 293 {
446     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 294     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
447         impl___main__$$$function_1_calledRepeatedly, 295         impl___main__$$$function_1_calledRepeatedly,
456         NULL, 304         NULL,
457 #endif 305 #endif
458         module___main__, 306         module___main__,
459         NULL, 307         NULL,
460         0 308         0
t 461     ); t
462  
463     return (PyObject *)result;
464 }
465  
466  
467  
468 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  )
469 {
470     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
471         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
472         const_str_plain_empty,
473 #if PYTHON_VERSION >= 300
474         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
475 #endif
476         codeobj_cf10b6884cb5105ff5cd49b1f9d99b85,
477         NULL,
478 #if PYTHON_VERSION >= 300
479         NULL,
480         NULL,
481 #endif
482         module___main__,
483         NULL,
484         1
485     ); 309     );
486 310
487     return (PyObject *)result; 311     return (PyObject *)result;
488 } 312 }
489 313