Construct FunctionCreationClosure

Performance Diagrams

Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)5074803388.95192307692307257.0CPython 2.712449915242.31730769230768443.491053941251Nuitka (master)12450701395.6826923076923443.48722654773786Nuitka (develop)12450107549.0480769230769443.490119005431Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)5658949988.95192307692307257.0CPython 3.514544977242.31730769230768440.600286424165Nuitka (master)14536118395.6826923076923440.6389719617823Nuitka (develop)14541442549.0480769230769440.61572308467714Nuitka (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 module constants used, if any. */ 33 /* The 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 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
40 static PyObject *const_tuple_str_plain_closure_var_str_plain_empty_tuple; 40 static PyObject *const_tuple_str_plain_closure_var_str_plain_empty_tuple;
41 static PyObject *const_str_plain_empty; 41 static PyObject *const_str_plain_empty;
n 42 static PyObject *const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd; n
43 extern PyObject *const_str_plain_print; 42 extern PyObject *const_str_plain_print;
44 static PyObject *const_int_pos_50000; 43 static PyObject *const_int_pos_50000;
45 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 44 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
46 static PyObject *const_str_plain_calledRepeatedly; 45 static PyObject *const_str_plain_calledRepeatedly;
47 static PyObject *const_str_angle_module; 46 static PyObject *const_str_angle_module;
60 static bool constants_created = false; 59 static bool constants_created = false;
61 60
62 static void createModuleConstants( void ) 61 static void createModuleConstants( void )
63 { 62 {
64     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 9, 1 ); 63     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 9, 1 );
n 65     const_tuple_str_plain_closure_var_tuple = PyTuple_New( 1 ); n 64     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 10, 1 );
66     const_str_plain_closure_var = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 11, 1 ); 65     const_str_plain_closure_var = UNSTREAM_STRING_ASCII( &constant_bin[ 19 ], 11, 1 );
67     PyTuple_SET_ITEM( const_tuple_str_plain_closure_var_tuple, 0, const_str_plain_closure_var ); Py_INCREF( const_str_plain_closure_var );
68     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 20 ], 10, 1 );
69     const_tuple_str_plain_closure_var_str_plain_empty_tuple = PyTuple_New( 2 ); 66     const_tuple_str_plain_closure_var_str_plain_empty_tuple = PyTuple_New( 2 );
70     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 ); 67     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 );
71     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 30 ], 5, 1 ); 68     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 30 ], 5, 1 );
72     PyTuple_SET_ITEM( const_tuple_str_plain_closure_var_str_plain_empty_tuple, 1, const_str_plain_empty ); Py_INCREF( const_str_plain_empty ); 69     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 73     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING_ASCII( &constant_bin[ 35 ], 31, 0 ); n
74     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 70     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
75     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 71     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 76     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 66 ], 3, 0 ); n 72     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 35 ], 3, 0 );
77     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 73     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 78     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 35 ], 16, 1 ); n 74     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 38 ], 16, 1 );
79     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 69 ], 8, 0 ); 75     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 54 ], 8, 0 );
80     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 77 ], 4, 1 ); 76     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 62 ], 4, 1 );
81     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 81 ], 1, 1 ); 77     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 66 ], 1, 1 );
82     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 82 ], 6, 1 ); 78     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 67 ], 6, 1 );
83     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 79     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
84     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 80     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
85     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 81     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
n 86     const_str_digest_6ead396455f7e7faafbc9ac10cbf5772 = UNSTREAM_STRING_ASCII( &constant_bin[ 88 ], 74, 0 ); n 82     const_str_digest_6ead396455f7e7faafbc9ac10cbf5772 = UNSTREAM_STRING_ASCII( &constant_bin[ 73 ], 74, 0 );
87 83
88     constants_created = true; 84     constants_created = true;
89 } 85 }
90 86
91 #ifndef __NUITKA_NO_ASSERT__ 87 #ifndef __NUITKA_NO_ASSERT__
99 #endif 95 #endif
100 96
101 // The module code objects. 97 // The module code objects.
102 static PyCodeObject *codeobj_b49f3936dcbc5c13a8c9e85a8745f9db; 98 static PyCodeObject *codeobj_b49f3936dcbc5c13a8c9e85a8745f9db;
103 static PyCodeObject *codeobj_55cac0188d36f9220b77a07e5aec0d37; 99 static PyCodeObject *codeobj_55cac0188d36f9220b77a07e5aec0d37;
n 104 static PyCodeObject *codeobj_f2da95cf3df494df8319d6b0cc203174; n
105 /* For use in "MainProgram.c". */ 100 /* For use in "MainProgram.c". */
106 PyCodeObject *codeobj_main = NULL; 101 PyCodeObject *codeobj_main = NULL;
107 102
108 static void createModuleCodeObjects(void) 103 static void createModuleCodeObjects(void)
109 { 104 {
110     module_filename_obj = const_str_digest_6ead396455f7e7faafbc9ac10cbf5772; 105     module_filename_obj = const_str_digest_6ead396455f7e7faafbc9ac10cbf5772;
111     codeobj_b49f3936dcbc5c13a8c9e85a8745f9db = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 106     codeobj_b49f3936dcbc5c13a8c9e85a8745f9db = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
112     codeobj_main = codeobj_b49f3936dcbc5c13a8c9e85a8745f9db; 107     codeobj_main = codeobj_b49f3936dcbc5c13a8c9e85a8745f9db;
113     codeobj_55cac0188d36f9220b77a07e5aec0d37 = 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 ); 108     codeobj_55cac0188d36f9220b77a07e5aec0d37 = 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 114     codeobj_f2da95cf3df494df8319d6b0cc203174 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_empty, 28, const_tuple_str_plain_closure_var_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS ); n
115 } 109 }
116 110
117 // The module function declarations. 111 // The module function declarations.
118 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ); 112 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  );
n 119   n
120  
121 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
122 113
123 114
124 // The module function definitions. 115 // The module function definitions.
125 static PyObject *impl___main__$$$function_1_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) 116 static PyObject *impl___main__$$$function_1_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars )
126 { 117 {
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_55cac0188d36f9220b77a07e5aec0d37; 125     struct Nuitka_FrameObject *frame_55cac0188d36f9220b77a07e5aec0d37;
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;
177         exception_tb = NULL; 167         exception_tb = NULL;
178         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 168         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
179         CHAIN_EXCEPTION( exception_value ); 169         CHAIN_EXCEPTION( exception_value );
180 170
181         exception_lineno = 25; 171         exception_lineno = 25;
n 182         type_description_1 = "co"; n 172         type_description_1 = "oN";
183         goto frame_exception_exit_1; 173         goto frame_exception_exit_1;
184     } 174     }
185 175
186     tmp_assign_source_1 = tmp_mvar_value_1; 176     tmp_assign_source_1 = tmp_mvar_value_1;
n 187     assert( PyCell_GET( var_closure_var == NULL ); n 177     assert( var_closure_var == NULL );
188     Py_INCREF( tmp_assign_source_1 ); 178     Py_INCREF( tmp_assign_source_1 );
n 189     PyCell_SET( var_closure_var, tmp_assign_source_1 ); n 179     var_closure_var = tmp_assign_source_1;
190 180
191     } 181     }
192 182
193 #if 0 183 #if 0
194     RESTORE_FRAME_EXCEPTION( frame_55cac0188d36f9220b77a07e5aec0d37 ); 184     RESTORE_FRAME_EXCEPTION( frame_55cac0188d36f9220b77a07e5aec0d37 );
217     // Attachs locals to frame if any. 207     // Attachs locals to frame if any.
218     Nuitka_Frame_AttachLocals( 208     Nuitka_Frame_AttachLocals(
219         (struct Nuitka_FrameObject *)frame_55cac0188d36f9220b77a07e5aec0d37, 209         (struct Nuitka_FrameObject *)frame_55cac0188d36f9220b77a07e5aec0d37,
220         type_description_1, 210         type_description_1,
221         var_closure_var, 211         var_closure_var,
n 222         var_empty n 212         NULL
223     ); 213     );
224 214
225 215
226     // Release cached frame. 216     // Release cached frame.
227     if ( frame_55cac0188d36f9220b77a07e5aec0d37 == cache_frame_55cac0188d36f9220b77a07e5aec0d37 ) 217     if ( frame_55cac0188d36f9220b77a07e5aec0d37 == cache_frame_55cac0188d36f9220b77a07e5aec0d37 )
238     // Return the error. 228     // Return the error.
239     goto try_except_handler_1; 229     goto try_except_handler_1;
240 230
241     frame_no_exception_1:; 231     frame_no_exception_1:;
242     { 232     {
n 243     PyObject *tmp_assign_source_2; n
244     tmp_assign_source_2 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
245  
246     ((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0] = var_closure_var;
247     Py_INCREF( ((struct Nuitka_FunctionObject *)tmp_assign_source_2)->m_closure[0] );
248  
249  
250     assert( var_empty == NULL );
251     var_empty = tmp_assign_source_2;
252  
253     }
254     {
255     PyObject *tmp_tuple_element_1; 233     PyObject *tmp_tuple_element_1;
n 256     CHECK_OBJECT( var_empty ); n 234     tmp_tuple_element_1 = const_int_pos_1;
257     tmp_tuple_element_1 = var_empty;
258     tmp_return_value = PyTuple_New( 2 ); 235     tmp_return_value = PyTuple_New( 2 );
259     Py_INCREF( tmp_tuple_element_1 ); 236     Py_INCREF( tmp_tuple_element_1 );
260     PyTuple_SET_ITEM( tmp_return_value, 0, tmp_tuple_element_1 ); 237     PyTuple_SET_ITEM( tmp_return_value, 0, tmp_tuple_element_1 );
n 261     CHECK_OBJECT( PyCell_GET( var_closure_var ); n 238     CHECK_OBJECT( var_closure_var );
262     tmp_tuple_element_1 = PyCell_GET( var_closure_var ); 239     tmp_tuple_element_1 = var_closure_var;
263     Py_INCREF( tmp_tuple_element_1 ); 240     Py_INCREF( tmp_tuple_element_1 );
264     PyTuple_SET_ITEM( tmp_return_value, 1, tmp_tuple_element_1 ); 241     PyTuple_SET_ITEM( tmp_return_value, 1, tmp_tuple_element_1 );
265     goto try_return_handler_1; 242     goto try_return_handler_1;
266     } 243     }
267     // tried codes exits in all cases 244     // tried codes exits in all cases
271     try_return_handler_1:; 248     try_return_handler_1:;
272     { 249     {
273     CHECK_OBJECT( (PyObject *)var_closure_var ); 250     CHECK_OBJECT( (PyObject *)var_closure_var );
274     Py_DECREF( var_closure_var ); 251     Py_DECREF( var_closure_var );
275     var_closure_var = NULL; 252     var_closure_var = NULL;
n 276   n
277     }
278     {
279     Py_XDECREF( var_empty );
280     var_empty = NULL;
281 253
282     } 254     }
283     { 255     {
284     goto function_return_exit; 256     goto function_return_exit;
285     } 257     }
322 return tmp_return_value; 294 return tmp_return_value;
323 295
324 } 296 }
325 297
326 298
n 327 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
328 {
329     // Preserve error status for checks
330 #ifndef __NUITKA_NO_ASSERT__
331     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
332 #endif
333  
334     // Local variable declarations.
335     struct Nuitka_FrameObject *frame_f2da95cf3df494df8319d6b0cc203174;
336     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
337     PyObject *tmp_return_value = NULL;
338     PyObject *exception_type = NULL;
339     PyObject *exception_value = NULL;
340     PyTracebackObject *exception_tb = NULL;
341     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
342     static struct Nuitka_FrameObject *cache_frame_f2da95cf3df494df8319d6b0cc203174 = NULL;
343  
344     // Actual function code.
345     MAKE_OR_REUSE_FRAME( cache_frame_f2da95cf3df494df8319d6b0cc203174, codeobj_f2da95cf3df494df8319d6b0cc203174, module___main__, sizeof(void *) );
346     frame_f2da95cf3df494df8319d6b0cc203174 = cache_frame_f2da95cf3df494df8319d6b0cc203174;
347  
348     // Push the new frame as the currently active one.
349     pushFrameStack( frame_f2da95cf3df494df8319d6b0cc203174 );
350  
351     // Mark the frame object as in use, ref count 1 will be up for reuse.
352     assert( Py_REFCNT( frame_f2da95cf3df494df8319d6b0cc203174 ) == 2 ); // Frame stack
353  
354     // Framed code:
355     {
356     if ( PyCell_GET( self->m_closure[0] ) == NULL )
357     {
358  
359         exception_type = PyExc_NameError;
360         Py_INCREF( exception_type );
361         exception_value = PyUnicode_FromFormat( "free variable '%s' referenced before assignment in enclosing scope", "closure_var" );
362         exception_tb = NULL;
363         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
364         CHAIN_EXCEPTION( exception_value );
365  
366         exception_lineno = 29;
367         type_description_1 = "c";
368         goto frame_exception_exit_1;
369     }
370  
371     tmp_return_value = PyCell_GET( self->m_closure[0] );
372     Py_INCREF( tmp_return_value );
373     goto frame_return_exit_1;
374     }
375  
376 #if 0
377     RESTORE_FRAME_EXCEPTION( frame_f2da95cf3df494df8319d6b0cc203174 );
378 #endif
379  
380     // Put the previous frame back on top.
381     popFrameStack();
382  
383     goto frame_no_exception_1;
384  
385     frame_return_exit_1:;
386 #if 0
387     RESTORE_FRAME_EXCEPTION( frame_f2da95cf3df494df8319d6b0cc203174 );
388 #endif
389  
390     // Put the previous frame back on top.
391     popFrameStack();
392  
393     goto function_return_exit;
394  
395     frame_exception_exit_1:;
396  
397 #if 0
398     RESTORE_FRAME_EXCEPTION( frame_f2da95cf3df494df8319d6b0cc203174 );
399 #endif
400  
401     if ( exception_tb == NULL )
402     {
403         exception_tb = MAKE_TRACEBACK( frame_f2da95cf3df494df8319d6b0cc203174, exception_lineno );
404     }
405     else if ( exception_tb->tb_frame != &frame_f2da95cf3df494df8319d6b0cc203174->m_frame )
406     {
407         exception_tb = ADD_TRACEBACK( exception_tb, frame_f2da95cf3df494df8319d6b0cc203174, exception_lineno );
408     }
409  
410     // Attachs locals to frame if any.
411     Nuitka_Frame_AttachLocals(
412         (struct Nuitka_FrameObject *)frame_f2da95cf3df494df8319d6b0cc203174,
413         type_description_1,
414         self->m_closure[0]
415     );
416  
417  
418     // Release cached frame.
419     if ( frame_f2da95cf3df494df8319d6b0cc203174 == cache_frame_f2da95cf3df494df8319d6b0cc203174 )
420     {
421         Py_DECREF( frame_f2da95cf3df494df8319d6b0cc203174 );
422     }
423     cache_frame_f2da95cf3df494df8319d6b0cc203174 = NULL;
424  
425     assertFrameObject( frame_f2da95cf3df494df8319d6b0cc203174 );
426  
427     // Put the previous frame back on top.
428     popFrameStack();
429  
430     // Return the error.
431     goto function_exception_exit;
432  
433     frame_no_exception_1:;
434  
435     // Return statement must have exited already.
436     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly$$$function_1_empty );
437     return NULL;
438  
439 function_exception_exit:
440     assert( exception_type );
441     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
442  
443     return NULL;
444 function_return_exit:
445  
446 CHECK_OBJECT( tmp_return_value );
447 assert( had_error || !ERROR_OCCURRED() );
448 return tmp_return_value;
449  
450 }
451  
452  
453 299
454 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 300 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
455 { 301 {
456     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 302     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
457         impl___main__$$$function_1_calledRepeatedly, 303         impl___main__$$$function_1_calledRepeatedly,
466         NULL, 312         NULL,
467 #endif 313 #endif
468         module___main__, 314         module___main__,
469         NULL, 315         NULL,
470         0 316         0
t 471     ); t
472  
473     return (PyObject *)result;
474 }
475  
476  
477  
478 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  )
479 {
480     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
481         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
482         const_str_plain_empty,
483 #if PYTHON_VERSION >= 300
484         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
485 #endif
486         codeobj_f2da95cf3df494df8319d6b0cc203174,
487         NULL,
488 #if PYTHON_VERSION >= 300
489         NULL,
490         NULL,
491 #endif
492         module___main__,
493         NULL,
494         1
495     ); 317     );
496 318
497     return (PyObject *)result; 319     return (PyObject *)result;
498 } 320 }
499 321