Construct FunctionCreationGeneratorLocal

Performance Diagrams

Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)1958364188.95192307692307257.0CPython 2.78251137242.31730769230768399.9987449532691Nuitka (master)8250842395.6826923076923400.0024673988788Nuitka (develop)8251048549.0480769230769399.9998679961819Nuitka (factory)Construct FunctionCreationGeneratorLocalTicks Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000200000002000000022000000220000002400000024000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)2588457388.95192307692307257.0CPython 3.510200586242.31730769230768406.7322161662737Nuitka (master)10190578395.6826923076923406.82776075065726Nuitka (develop)10191715549.0480769230769406.81690601520125Nuitka (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
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 static PyObject *const_str_digest_0b34bf82f7853f22651bbd97a4050696; 39 static PyObject *const_str_digest_0b34bf82f7853f22651bbd97a4050696;
40 extern PyObject *const_int_0; 40 extern PyObject *const_int_0;
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;
66     const_tuple_str_plain_empty_tuple = PyTuple_New( 1 ); 65     const_tuple_str_plain_empty_tuple = PyTuple_New( 1 );
67     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 5, 1 ); 66     const_str_plain_empty = UNSTREAM_STRING_ASCII( &constant_bin[ 9 ], 5, 1 );
68     PyTuple_SET_ITEM( const_tuple_str_plain_empty_tuple, 0, const_str_plain_empty ); Py_INCREF( const_str_plain_empty ); 67     PyTuple_SET_ITEM( const_tuple_str_plain_empty_tuple, 0, const_str_plain_empty ); Py_INCREF( const_str_plain_empty );
69     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 10, 1 ); 68     const_str_plain_module_var = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 10, 1 );
70     const_str_digest_0b34bf82f7853f22651bbd97a4050696 = UNSTREAM_STRING_ASCII( &constant_bin[ 24 ], 81, 0 ); 69     const_str_digest_0b34bf82f7853f22651bbd97a4050696 = UNSTREAM_STRING_ASCII( &constant_bin[ 24 ], 81, 0 );
n 71     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING_ASCII( &constant_bin[ 105 ], 31, 0 ); n
72     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 70     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
73     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 71     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 3, 0 ); n 72     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 105 ], 3, 0 );
75     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 76     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 105 ], 16, 1 ); n 74     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 108 ], 16, 1 );
77     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 139 ], 8, 0 ); 75     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 124 ], 8, 0 );
78     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 147 ], 4, 1 ); 76     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 132 ], 4, 1 );
79     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 49 ], 1, 1 ); 77     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 49 ], 1, 1 );
n 80     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 151 ], 6, 1 ); n 78     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 136 ], 6, 1 );
81     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 79     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
82     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 );
83     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 );
84 82
85     constants_created = true; 83     constants_created = true;
97 #endif 95 #endif
98 96
99 // The module code objects. 97 // The module code objects.
100 static PyCodeObject *codeobj_9c6ab31b2577ecaf45792318d656ae2b; 98 static PyCodeObject *codeobj_9c6ab31b2577ecaf45792318d656ae2b;
101 static PyCodeObject *codeobj_632288a9942ac712757a0409174c9fb6; 99 static PyCodeObject *codeobj_632288a9942ac712757a0409174c9fb6;
n 102 static PyCodeObject *codeobj_cbd860c8b81c5c3ad656239b8530cebc; n
103 /* For use in "MainProgram.c". */ 100 /* For use in "MainProgram.c". */
104 PyCodeObject *codeobj_main = NULL; 101 PyCodeObject *codeobj_main = NULL;
105 102
106 static void createModuleCodeObjects(void) 103 static void createModuleCodeObjects(void)
107 { 104 {
108     module_filename_obj = const_str_digest_0b34bf82f7853f22651bbd97a4050696; 105     module_filename_obj = const_str_digest_0b34bf82f7853f22651bbd97a4050696;
109     codeobj_9c6ab31b2577ecaf45792318d656ae2b = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 106     codeobj_9c6ab31b2577ecaf45792318d656ae2b = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
110     codeobj_main = codeobj_9c6ab31b2577ecaf45792318d656ae2b; 107     codeobj_main = codeobj_9c6ab31b2577ecaf45792318d656ae2b;
111     codeobj_632288a9942ac712757a0409174c9fb6 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 23, const_tuple_str_plain_empty_tuple, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 108     codeobj_632288a9942ac712757a0409174c9fb6 = 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 112     codeobj_cbd860c8b81c5c3ad656239b8530cebc = MAKE_CODEOBJ( module_filename_obj, const_str_plain_empty, 26, const_tuple_empty, 0, 0, CO_GENERATOR | CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n
113 } 109 }
114 110
115 // The module function declarations. 111 // The module function declarations.
n 116 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker( void ); n
117  
118  
119 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ); 112 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 113
124 114
125 // The module function definitions. 115 // The module function definitions.
126 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 )
127 { 117 {
129 #ifndef __NUITKA_NO_ASSERT__ 119 #ifndef __NUITKA_NO_ASSERT__
130     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 120     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
131 #endif 121 #endif
132 122
133     // Local variable declarations. 123     // Local variable declarations.
n 134     PyObject *var_empty = NULL; n
135     PyObject *tmp_return_value = NULL; 124     PyObject *tmp_return_value = NULL;
136 125
137     // Actual function body. 126     // Actual function body.
n 138     { n 127     tmp_return_value = const_int_pos_1;
139         PyObject *tmp_assign_source_1;
140         tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  );
141  
142  
143  
144         assert( var_empty == NULL );
145         var_empty = tmp_assign_source_1;
146     }
147     // Tried code:
148     CHECK_OBJECT( var_empty );
149     tmp_return_value = var_empty;
150     Py_INCREF( tmp_return_value ); 128     Py_INCREF( tmp_return_value );
n 151     goto try_return_handler_1; n
152     // tried codes exits in all cases
153     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
154     return NULL;
155     // Return handler code:
156     try_return_handler_1:;
157     CHECK_OBJECT( (PyObject *)var_empty );
158     Py_DECREF( var_empty );
159     var_empty = NULL;
160  
161     goto function_return_exit; 129     goto function_return_exit;
n 162     // End of try: n
163 130
164     // Return statement must have exited already. 131     // Return statement must have exited already.
165     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 132     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
166     return NULL; 133     return NULL;
167 134
173    // Actual function exit with return value, making sure we did not make 140    // Actual function exit with return value, making sure we did not make
174    // the error status worse despite non-NULL return. 141    // the error status worse despite non-NULL return.
175    CHECK_OBJECT( tmp_return_value ); 142    CHECK_OBJECT( tmp_return_value );
176    assert( had_error || !ERROR_OCCURRED() ); 143    assert( had_error || !ERROR_OCCURRED() );
177    return tmp_return_value; 144    return tmp_return_value;
n 178 } n
179  
180  
181 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars )
182 {
183     // Preserve error status for checks
184 #ifndef __NUITKA_NO_ASSERT__
185     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
186 #endif
187  
188     // Local variable declarations.
189     PyObject *tmp_return_value = NULL;
190  
191     // Actual function body.
192     tmp_return_value = __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker();
193  
194  
195  
196     goto function_return_exit;
197  
198     // Return statement must have exited already.
199     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly$$$function_1_empty );
200     return NULL;
201  
202  
203 function_return_exit:
204    // Function cleanup code if any.
205  
206  
207    // Actual function exit with return value, making sure we did not make
208    // the error status worse despite non-NULL return.
209    CHECK_OBJECT( tmp_return_value );
210    assert( had_error || !ERROR_OCCURRED() );
211    return tmp_return_value;
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 generator function body.
246     MAKE_OR_REUSE_FRAME( cache_m_frame, codeobj_cbd860c8b81c5c3ad656239b8530cebc, 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_cbd860c8b81c5c3ad656239b8530cebc,
401         0,
402         sizeof(struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals)
403     );
404 } 145 }
405 146
406 147
407 148
408 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 149 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
412         const_str_plain_calledRepeatedly, 153         const_str_plain_calledRepeatedly,
413 #if PYTHON_VERSION >= 300 154 #if PYTHON_VERSION >= 300
414         NULL, 155         NULL,
415 #endif 156 #endif
416         codeobj_632288a9942ac712757a0409174c9fb6, 157         codeobj_632288a9942ac712757a0409174c9fb6,
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_cbd860c8b81c5c3ad656239b8530cebc,
441         NULL, 158         NULL,
442 #if PYTHON_VERSION >= 300 159 #if PYTHON_VERSION >= 300
443         NULL, 160         NULL,
444         NULL, 161         NULL,
445 #endif 162 #endif