Construct FunctionCreationGeneratorLocal

Performance Diagrams

Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)1983364788.95192307692307257.00000000000006CPython 2.78200442242.31730769230768401.9427797058512Nuitka (master)8200220395.6826923076923401.94554569313453Nuitka (develop)8200160549.0480769230769401.94629325726515Nuitka (factory)Construct FunctionCreationGeneratorLocalTicks Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000200000002000000022000000220000002400000024000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)2553683988.95192307692307257.0CPython 3.510211036242.31730769230768405.3050311310893Nuitka (master)10202490395.6826923076923405.38772923154426Nuitka (develop)10198457549.0480769230769405.4267558450634Nuitka (factory)Construct FunctionCreationGeneratorLocalTicks

Source Code with Construct

module_var = None

def calledRepeatedly():
    # We measure making a local function that will remain unused.
# construct_begin
    def empty():
        yield 1
# construct_alternative



    return empty


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.
# construct_begin


# construct_alternative
    empty = 1
# construct_end

    return empty


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

print("OK.")

Context Diff of Source Code


Construct
Baseline
21 module_var = None 21 module_var = None
22 22
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 # construct_begin 25 # construct_begin
n 26     def empty(): n
27         yield 1
28 # construct_alternative
29 26
30 27
t t 28 # construct_alternative
29     empty = 1
30 # construct_end
31 31
32     return empty 32     return empty
33 33
34 34
35 import itertools 35 import itertools

Context Diff of Generated Code


Construct
Baseline
36 static PyObject *const_str_plain_module_var; 36 static PyObject *const_str_plain_module_var;
37 extern PyObject *const_int_pos_1; 37 extern PyObject *const_int_pos_1;
38 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
39 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
40 static PyObject *const_str_plain_empty; 40 static PyObject *const_str_plain_empty;
n 41 static PyObject *const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd; n
42 extern PyObject *const_str_plain_print; 41 extern PyObject *const_str_plain_print;
43 static PyObject *const_int_pos_50000; 42 static PyObject *const_int_pos_50000;
44 static PyObject *const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9; 43 static PyObject *const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9;
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;
63     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 9, 1 ); 62     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 9, 1 );
64     const_tuple_str_plain_empty_tuple = PyTuple_New( 1 ); 63     const_tuple_str_plain_empty_tuple = PyTuple_New( 1 );
65     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 5, 1 ); 64     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 5, 1 );
66     PyTuple_SET_ITEM( const_tuple_str_plain_empty_tuple, 0, const_str_plain_empty ); Py_INCREF( const_str_plain_empty ); 65     PyTuple_SET_ITEM( const_tuple_str_plain_empty_tuple, 0, const_str_plain_empty ); Py_INCREF( const_str_plain_empty );
67     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 10, 1 ); 66     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 10, 1 );
n 68     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING_ASCII( &constant_bin[ 24 ], 31, 0 ); n
69     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 67     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
n 70     const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9 = UNSTREAM_STRING_ASCII( &constant_bin[ 55 ], 81, 0 ); n 68     const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9 = UNSTREAM_STRING_ASCII( &constant_bin[ 24 ], 81, 0 );
71     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 69     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 72     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 3, 0 ); n 70     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 105 ], 3, 0 );
73     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 71     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 74     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 24 ], 16, 1 ); n 72     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 108 ], 16, 1 );
75     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 139 ], 8, 0 ); 73     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 124 ], 8, 0 );
76     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 147 ], 4, 1 ); 74     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 132 ], 4, 1 );
77     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 80 ], 1, 1 ); 75     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 49 ], 1, 1 );
78     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 151 ], 6, 1 ); 76     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 6, 1 );
79     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 77     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
80     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 78     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, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 79     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
82 80
83     constants_created = true; 81     constants_created = true;
94 #endif 92 #endif
95 93
96 // The module code objects. 94 // The module code objects.
97 static PyCodeObject *codeobj_c99751a7c5d1caaee11b0a96d583ef8d; 95 static PyCodeObject *codeobj_c99751a7c5d1caaee11b0a96d583ef8d;
98 static PyCodeObject *codeobj_be9fb753821c5159f12f1a5ff2556bc0; 96 static PyCodeObject *codeobj_be9fb753821c5159f12f1a5ff2556bc0;
n 99 static PyCodeObject *codeobj_6552406f2fbff1a29ec4b0236ffedeea; n
100 /* For use in "MainProgram.c". */ 97 /* For use in "MainProgram.c". */
101 PyCodeObject *codeobj_main = NULL; 98 PyCodeObject *codeobj_main = NULL;
102 99
103 static void createModuleCodeObjects(void) 100 static void createModuleCodeObjects(void)
104 { 101 {
105     module_filename_obj = const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9; 102     module_filename_obj = const_str_digest_cde2078ed020c6ddb51bb1be45bf42a9;
106     codeobj_c99751a7c5d1caaee11b0a96d583ef8d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 103     codeobj_c99751a7c5d1caaee11b0a96d583ef8d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
107     codeobj_main = codeobj_c99751a7c5d1caaee11b0a96d583ef8d; 104     codeobj_main = codeobj_c99751a7c5d1caaee11b0a96d583ef8d;
108     codeobj_be9fb753821c5159f12f1a5ff2556bc0 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 23, const_tuple_str_plain_empty_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 105     codeobj_be9fb753821c5159f12f1a5ff2556bc0 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 23, const_tuple_str_plain_empty_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
n 109     codeobj_6552406f2fbff1a29ec4b0236ffedeea = MAKE_CODEOBJ( module_filename_obj, const_str_plain_empty, 26, const_tuple_empty, 0, 0, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n
110 } 106 }
111 107
112 // The module function declarations. 108 // The module function declarations.
n 113 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker( void ); n
114  
115  
116 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ); 109 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  );
n 117   n
118  
119 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
120 110
121 111
122 // The module function definitions. 112 // The module function definitions.
123 static PyObject *impl___main__$$$function_1_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) 113 static PyObject *impl___main__$$$function_1_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars )
124 { 114 {
126 #ifndef __NUITKA_NO_ASSERT__ 116 #ifndef __NUITKA_NO_ASSERT__
127     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 117     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
128 #endif 118 #endif
129 119
130     // Local variable declarations. 120     // Local variable declarations.
n 131     PyObject *var_empty = NULL; n
132     PyObject *tmp_return_value = NULL; 121     PyObject *tmp_return_value = NULL;
133 122
134     // Actual function code. 123     // Actual function code.
135     { 124     {
n 136     PyObject *tmp_assign_source_1; n 125     tmp_return_value = const_int_pos_1;
137     tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
138  
139  
140  
141     assert( var_empty == NULL );
142     var_empty = tmp_assign_source_1;
143  
144     }
145     {
146     // Tried code:
147     {
148     CHECK_OBJECT( var_empty );
149     tmp_return_value = var_empty;
150     Py_INCREF( tmp_return_value ); 126     Py_INCREF( tmp_return_value );
n 151     goto try_return_handler_1; n
152     }
153     // tried codes exits in all cases
154     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
155     return NULL;
156     // Return handler code:
157     try_return_handler_1:;
158     {
159     CHECK_OBJECT( (PyObject *)var_empty );
160     Py_DECREF( var_empty );
161     var_empty = NULL;
162  
163     }
164     {
165     goto function_return_exit; 127     goto function_return_exit;
n 166     } n
167     // End of try:
168     } 128     }
169 129
170     // Return statement must have exited already. 130     // Return statement must have exited already.
171     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 131     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
172     return NULL; 132     return NULL;
175 135
176 CHECK_OBJECT( tmp_return_value ); 136 CHECK_OBJECT( tmp_return_value );
177 assert( had_error || !ERROR_OCCURRED() ); 137 assert( had_error || !ERROR_OCCURRED() );
178 return tmp_return_value; 138 return tmp_return_value;
179 139
n 180 } n
181  
182  
183 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars )
184 {
185     // Preserve error status for checks
186 #ifndef __NUITKA_NO_ASSERT__
187     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
188 #endif
189  
190     // Local variable declarations.
191     PyObject *tmp_return_value = NULL;
192  
193     // Actual function code.
194     {
195     tmp_return_value = __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker();
196  
197  
198  
199     goto function_return_exit;
200     }
201  
202     // Return statement must have exited already.
203     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly$$$function_1_empty );
204     return NULL;
205  
206 function_return_exit:
207  
208 CHECK_OBJECT( tmp_return_value );
209 assert( had_error || !ERROR_OCCURRED() );
210 return tmp_return_value;
211  
212 }
213  
214  
215  
216 struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals {
217     char const *type_description_1;
218     PyObject *exception_type;
219     PyObject *exception_value;
220     PyTracebackObject *exception_tb;
221     int exception_lineno;
222 };
223  
224 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_context( struct Nuitka_GeneratorObject *generator, PyObject *yield_return_value )
225 {
226     CHECK_OBJECT( (PyObject *)generator );
227     assert( Nuitka_Generator_Check( (PyObject *)generator ) );
228  
229     // Heap access if used.
230     struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals *generator_heap = (struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals *)generator->m_heap_storage;
231  
232     // Dispatch to yield based on return label index:
233     switch(generator->m_yield_return_index) {
234     case 1: goto yield_return_1;
235     }
236  
237     // Local variable initialization
238     static struct Nuitka_FrameObject *cache_m_frame = NULL;
239     generator_heap->type_description_1 = NULL;
240     generator_heap->exception_type = NULL;
241     generator_heap->exception_value = NULL;
242     generator_heap->exception_tb = NULL;
243     generator_heap->exception_lineno = 0;
244  
245     // Actual function code.
246     MAKE_OR_REUSE_FRAME( cache_m_frame, codeobj_6552406f2fbff1a29ec4b0236ffedeea, module___main__, 0 );
247     generator->m_frame = cache_m_frame;
248  
249     // Mark the frame object as in use, ref count 1 will be up for reuse.
250     Py_INCREF( generator->m_frame );
251     assert( Py_REFCNT( generator->m_frame ) == 2 ); // Frame stack
252  
253 #if PYTHON_VERSION >= 340
254     generator->m_frame->m_frame.f_gen = (PyObject *)generator;
255 #endif
256  
257     Py_CLEAR( generator->m_frame->m_frame.f_back );
258  
259     generator->m_frame->m_frame.f_back = PyThreadState_GET()->frame;
260     Py_INCREF( generator->m_frame->m_frame.f_back );
261  
262     PyThreadState_GET()->frame = &generator->m_frame->m_frame;
263     Py_INCREF( generator->m_frame );
264  
265     Nuitka_Frame_MarkAsExecuting( generator->m_frame );
266  
267 #if PYTHON_VERSION >= 300
268     // Accept currently existing exception as the one to publish again when we
269     // yield or yield from.
270     {
271         PyThreadState *thread_state = PyThreadState_GET();
272  
273 #if PYTHON_VERSION < 370
274         generator->m_frame->m_frame.f_exc_type = EXC_TYPE( thread_state );
275     if ( generator->m_frame->m_frame.f_exc_type == Py_None ) generator->m_frame->m_frame.f_exc_type = NULL;
276         Py_XINCREF( generator->m_frame->m_frame.f_exc_type );
277     generator->m_frame->m_frame.f_exc_value = EXC_VALUE( thread_state );
278         Py_XINCREF( generator->m_frame->m_frame.f_exc_value );
279     generator->m_frame->m_frame.f_exc_traceback = EXC_TRACEBACK( thread_state );
280         Py_XINCREF( generator->m_frame->m_frame.f_exc_traceback );
281 #else
282         generator->m_exc_state.exc_type = EXC_TYPE( thread_state );
283         if ( generator->m_exc_state.exc_type == Py_None ) generator->m_exc_state.exc_type = NULL;
284         Py_XINCREF( generator->m_exc_state.exc_type );
285         generator->m_exc_state.exc_value = EXC_VALUE( thread_state );
286         Py_XINCREF( generator->m_exc_state.exc_value );
287         generator->m_exc_state.exc_traceback = EXC_TRACEBACK( thread_state );
288         Py_XINCREF( generator->m_exc_state.exc_traceback );
289 #endif
290     }
291  
292 #endif
293  
294     // Framed code:
295     {
296     PyObject *tmp_expression_name_1;
297     NUITKA_MAY_BE_UNUSED PyObject *tmp_yield_result_1;
298     tmp_expression_name_1 = const_int_pos_1;
299     Py_INCREF( tmp_expression_name_1 );
300     generator->m_yield_return_index = 1;
301     return tmp_expression_name_1;
302     yield_return_1:
303     if ( yield_return_value == NULL )
304     {
305         assert( ERROR_OCCURRED() );
306  
307         FETCH_ERROR_OCCURRED( &generator_heap->exception_type, &generator_heap->exception_value, &generator_heap->exception_tb );
308  
309  
310         generator_heap->exception_lineno = 27;
311  
312         goto frame_exception_exit_1;
313     }
314     tmp_yield_result_1 = yield_return_value;
315     }
316  
317     Nuitka_Frame_MarkAsNotExecuting( generator->m_frame );
318  
319 #if PYTHON_VERSION >= 370
320     Py_CLEAR( generator->m_exc_state.exc_type );
321     Py_CLEAR( generator->m_exc_state.exc_value );
322     Py_CLEAR( generator->m_exc_state.exc_traceback );
323 #elif PYTHON_VERSION >= 300
324     Py_CLEAR( generator->m_frame->m_frame.f_exc_type );
325     Py_CLEAR( generator->m_frame->m_frame.f_exc_value );
326     Py_CLEAR( generator->m_frame->m_frame.f_exc_traceback );
327 #endif
328  
329     // Allow re-use of the frame again.
330     Py_DECREF( generator->m_frame );
331     goto frame_no_exception_1;
332  
333     frame_exception_exit_1:;
334  
335     // If it's not an exit exception, consider and create a traceback for it.
336     if ( !EXCEPTION_MATCH_GENERATOR( generator_heap->exception_type ) )
337     {
338         if ( generator_heap->exception_tb == NULL )
339         {
340             generator_heap->exception_tb = MAKE_TRACEBACK( generator->m_frame, generator_heap->exception_lineno );
341         }
342         else if ( generator_heap->exception_tb->tb_frame != &generator->m_frame->m_frame )
343         {
344             generator_heap->exception_tb = ADD_TRACEBACK( generator_heap->exception_tb, generator->m_frame, generator_heap->exception_lineno );
345         }
346  
347         Nuitka_Frame_AttachLocals(
348             (struct Nuitka_FrameObject *)generator->m_frame,
349             generator_heap->type_description_1
350         );
351  
352  
353         // Release cached frame.
354         if ( generator->m_frame == cache_m_frame )
355         {
356             Py_DECREF( generator->m_frame );
357         }
358         cache_m_frame = NULL;
359  
360         assertFrameObject( generator->m_frame );
361     }
362  
363 #if PYTHON_VERSION >= 370
364     Py_CLEAR( generator->m_exc_state.exc_type );
365     Py_CLEAR( generator->m_exc_state.exc_value );
366     Py_CLEAR( generator->m_exc_state.exc_traceback );
367 #elif PYTHON_VERSION >= 300
368     Py_CLEAR( generator->m_frame->m_frame.f_exc_type );
369     Py_CLEAR( generator->m_frame->m_frame.f_exc_value );
370     Py_CLEAR( generator->m_frame->m_frame.f_exc_traceback );
371 #endif
372  
373     Py_DECREF( generator->m_frame );
374  
375     // Return the error.
376     goto function_exception_exit;
377  
378     frame_no_exception_1:;
379  
380  
381     return NULL;
382  
383     function_exception_exit:
384     assert( generator_heap->exception_type );
385     RESTORE_ERROR_OCCURRED( generator_heap->exception_type, generator_heap->exception_value, generator_heap->exception_tb );
386  
387     return NULL;
388  
389 }
390  
391 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker( void )
392 {
393     return Nuitka_Generator_New(
394         __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_context,
395         module___main__,
396         const_str_plain_empty,
397 #if PYTHON_VERSION >= 350
398         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
399 #endif
400         codeobj_6552406f2fbff1a29ec4b0236ffedeea,
401         0,
402         sizeof(struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals)
403     );
404 } 140 }
405 141
406 142
407 143
408 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 144 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
412         const_str_plain_calledRepeatedly, 148         const_str_plain_calledRepeatedly,
413 #if PYTHON_VERSION >= 300 149 #if PYTHON_VERSION >= 300
414         NULL, 150         NULL,
415 #endif 151 #endif
416         codeobj_be9fb753821c5159f12f1a5ff2556bc0, 152         codeobj_be9fb753821c5159f12f1a5ff2556bc0,
t 417         NULL, t
418 #if PYTHON_VERSION >= 300
419         NULL,
420         NULL,
421 #endif
422         module___main__,
423         NULL,
424         0
425     );
426  
427     return (PyObject *)result;
428 }
429  
430  
431  
432 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  )
433 {
434     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
435         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
436         const_str_plain_empty,
437 #if PYTHON_VERSION >= 300
438         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
439 #endif
440         codeobj_6552406f2fbff1a29ec4b0236ffedeea,
441         NULL, 153         NULL,
442 #if PYTHON_VERSION >= 300 154 #if PYTHON_VERSION >= 300
443         NULL, 155         NULL,
444         NULL, 156         NULL,
445 #endif 157 #endif