Construct FunctionCreationGeneratorLocal

Performance Diagrams

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