Construct FunctionCreationClosure

Performance Diagrams

Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)5074803388.95192307692307257.0CPython 2.712450317242.31730769230768443.48909641937786Nuitka (master)12500663395.6826923076923443.2439387173277Nuitka (develop)12500881549.0480769230769443.2428771756154Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 0010000000100000002000000020000000300000003000000040000000400000005000000050000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)5658949988.95192307692307257.0CPython 3.514552682242.31730769230768440.56664018109683Nuitka (master)14546458395.6826923076923440.5938191839335Nuitka (develop)14552227549.0480769230769440.56862707799445Nuitka (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_digest_611608cac55c1bf198352d34a21cbcda; 41 static PyObject *const_str_digest_611608cac55c1bf198352d34a21cbcda;
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;
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 );
73     const_str_digest_611608cac55c1bf198352d34a21cbcda = UNSTREAM_STRING_ASCII( &constant_bin[ 35 ], 74, 0 ); 70     const_str_digest_611608cac55c1bf198352d34a21cbcda = UNSTREAM_STRING_ASCII( &constant_bin[ 35 ], 74, 0 );
n 74     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING_ASCII( &constant_bin[ 109 ], 31, 0 ); n
75     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 71     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
76     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 72     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 77     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 140 ], 3, 0 ); n 73     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 109 ], 3, 0 );
78     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 74     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 79     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 109 ], 16, 1 ); n 75     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 112 ], 16, 1 );
80     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 143 ], 8, 0 ); 76     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 128 ], 8, 0 );
81     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 151 ], 4, 1 ); 77     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 4, 1 );
82     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 60 ], 1, 1 ); 78     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 60 ], 1, 1 );
n 83     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 155 ], 6, 1 ); n 79     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 140 ], 6, 1 );
84     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 80     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
85     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 81     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
86     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 82     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
87 83
88     constants_created = true; 84     constants_created = true;
99 #endif 95 #endif
100 96
101 // The module code objects. 97 // The module code objects.
102 static PyCodeObject *codeobj_982e31730cf440ac3c422390688f00d8; 98 static PyCodeObject *codeobj_982e31730cf440ac3c422390688f00d8;
103 static PyCodeObject *codeobj_1a490dcfb8d41bf12af29a2663e2dd15; 99 static PyCodeObject *codeobj_1a490dcfb8d41bf12af29a2663e2dd15;
n 104 static PyCodeObject *codeobj_c1d6038118311991d693f436551b9a92; 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_611608cac55c1bf198352d34a21cbcda; 105     module_filename_obj = const_str_digest_611608cac55c1bf198352d34a21cbcda;
111     codeobj_982e31730cf440ac3c422390688f00d8 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 106     codeobj_982e31730cf440ac3c422390688f00d8 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
112     codeobj_main = codeobj_982e31730cf440ac3c422390688f00d8; 107     codeobj_main = codeobj_982e31730cf440ac3c422390688f00d8;
113     codeobj_1a490dcfb8d41bf12af29a2663e2dd15 = 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_1a490dcfb8d41bf12af29a2663e2dd15 = 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_c1d6038118311991d693f436551b9a92 = 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_1a490dcfb8d41bf12af29a2663e2dd15; 125     struct Nuitka_FrameObject *frame_1a490dcfb8d41bf12af29a2663e2dd15;
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_1a490dcfb8d41bf12af29a2663e2dd15 ); 184     RESTORE_FRAME_EXCEPTION( frame_1a490dcfb8d41bf12af29a2663e2dd15 );
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_1a490dcfb8d41bf12af29a2663e2dd15, 209         (struct Nuitka_FrameObject *)frame_1a490dcfb8d41bf12af29a2663e2dd15,
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_1a490dcfb8d41bf12af29a2663e2dd15 == cache_frame_1a490dcfb8d41bf12af29a2663e2dd15 ) 217     if ( frame_1a490dcfb8d41bf12af29a2663e2dd15 == cache_frame_1a490dcfb8d41bf12af29a2663e2dd15 )
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     CHECK_OBJECT( (PyObject *)var_empty );
280     Py_DECREF( var_empty );
281     var_empty = NULL;
282 253
283     } 254     }
284     { 255     {
285     goto function_return_exit; 256     goto function_return_exit;
286     } 257     }
323 return tmp_return_value; 294 return tmp_return_value;
324 295
325 } 296 }
326 297
327 298
n 328 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
329 {
330     // Preserve error status for checks
331 #ifndef __NUITKA_NO_ASSERT__
332     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
333 #endif
334  
335     // Local variable declarations.
336     struct Nuitka_FrameObject *frame_c1d6038118311991d693f436551b9a92;
337     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
338     PyObject *tmp_return_value = NULL;
339     PyObject *exception_type = NULL;
340     PyObject *exception_value = NULL;
341     PyTracebackObject *exception_tb = NULL;
342     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
343     static struct Nuitka_FrameObject *cache_frame_c1d6038118311991d693f436551b9a92 = NULL;
344  
345     // Actual function code.
346     MAKE_OR_REUSE_FRAME( cache_frame_c1d6038118311991d693f436551b9a92, codeobj_c1d6038118311991d693f436551b9a92, module___main__, sizeof(void *) );
347     frame_c1d6038118311991d693f436551b9a92 = cache_frame_c1d6038118311991d693f436551b9a92;
348  
349     // Push the new frame as the currently active one.
350     pushFrameStack( frame_c1d6038118311991d693f436551b9a92 );
351  
352     // Mark the frame object as in use, ref count 1 will be up for reuse.
353     assert( Py_REFCNT( frame_c1d6038118311991d693f436551b9a92 ) == 2 ); // Frame stack
354  
355     // Framed code:
356     {
357     if ( PyCell_GET( self->m_closure[0] ) == NULL )
358     {
359  
360         exception_type = PyExc_NameError;
361         Py_INCREF( exception_type );
362         exception_value = PyUnicode_FromFormat( "free variable '%s' referenced before assignment in enclosing scope", "closure_var" );
363         exception_tb = NULL;
364         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
365         CHAIN_EXCEPTION( exception_value );
366  
367         exception_lineno = 29;
368         type_description_1 = "c";
369         goto frame_exception_exit_1;
370     }
371  
372     tmp_return_value = PyCell_GET( self->m_closure[0] );
373     Py_INCREF( tmp_return_value );
374     goto frame_return_exit_1;
375     }
376  
377 #if 0
378     RESTORE_FRAME_EXCEPTION( frame_c1d6038118311991d693f436551b9a92 );
379 #endif
380  
381     // Put the previous frame back on top.
382     popFrameStack();
383  
384     goto frame_no_exception_1;
385  
386     frame_return_exit_1:;
387 #if 0
388     RESTORE_FRAME_EXCEPTION( frame_c1d6038118311991d693f436551b9a92 );
389 #endif
390  
391     // Put the previous frame back on top.
392     popFrameStack();
393  
394     goto function_return_exit;
395  
396     frame_exception_exit_1:;
397  
398 #if 0
399     RESTORE_FRAME_EXCEPTION( frame_c1d6038118311991d693f436551b9a92 );
400 #endif
401  
402     if ( exception_tb == NULL )
403     {
404         exception_tb = MAKE_TRACEBACK( frame_c1d6038118311991d693f436551b9a92, exception_lineno );
405     }
406     else if ( exception_tb->tb_frame != &frame_c1d6038118311991d693f436551b9a92->m_frame )
407     {
408         exception_tb = ADD_TRACEBACK( exception_tb, frame_c1d6038118311991d693f436551b9a92, exception_lineno );
409     }
410  
411     // Attachs locals to frame if any.
412     Nuitka_Frame_AttachLocals(
413         (struct Nuitka_FrameObject *)frame_c1d6038118311991d693f436551b9a92,
414         type_description_1,
415         self->m_closure[0]
416     );
417  
418  
419     // Release cached frame.
420     if ( frame_c1d6038118311991d693f436551b9a92 == cache_frame_c1d6038118311991d693f436551b9a92 )
421     {
422         Py_DECREF( frame_c1d6038118311991d693f436551b9a92 );
423     }
424     cache_frame_c1d6038118311991d693f436551b9a92 = NULL;
425  
426     assertFrameObject( frame_c1d6038118311991d693f436551b9a92 );
427  
428     // Put the previous frame back on top.
429     popFrameStack();
430  
431     // Return the error.
432     goto function_exception_exit;
433  
434     frame_no_exception_1:;
435  
436     // Return statement must have exited already.
437     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly$$$function_1_empty );
438     return NULL;
439  
440 function_exception_exit:
441     assert( exception_type );
442     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
443  
444     return NULL;
445 function_return_exit:
446  
447 CHECK_OBJECT( tmp_return_value );
448 assert( had_error || !ERROR_OCCURRED() );
449 return tmp_return_value;
450  
451 }
452  
453  
454 299
455 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 300 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
456 { 301 {
457     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 302     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
458         impl___main__$$$function_1_calledRepeatedly, 303         impl___main__$$$function_1_calledRepeatedly,
467         NULL, 312         NULL,
468 #endif 313 #endif
469         module___main__, 314         module___main__,
470         NULL, 315         NULL,
471         0 316         0
t 472     ); t
473  
474     return (PyObject *)result;
475 }
476  
477  
478  
479 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  )
480 {
481     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
482         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
483         const_str_plain_empty,
484 #if PYTHON_VERSION >= 300
485         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
486 #endif
487         codeobj_c1d6038118311991d693f436551b9a92,
488         NULL,
489 #if PYTHON_VERSION >= 300
490         NULL,
491         NULL,
492 #endif
493         module___main__,
494         NULL,
495         1
496     ); 317     );
497 318
498     return (PyObject *)result; 319     return (PyObject *)result;
499 } 320 }
500 321