Construct FunctionCreationGeneratorLocal

Performance Diagrams

Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)1983364788.95192307692307257.00000000000006CPython 2.78550346242.31730769230768397.58318504640897Nuitka (master)8200323395.6826923076923401.94426237471026Nuitka (develop)8200341549.0480769230769401.94403810547107Nuitka (factory)Construct FunctionCreationGeneratorLocalTicks Construct FunctionCreationGeneratorLocal 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000200000002000000022000000220000002400000024000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)2553683988.95192307692307257.0CPython 3.510752203242.31730769230768400.06825568890736Nuitka (master)10201184395.6826923076923405.40036715796526Nuitka (develop)10197282549.0480769230769405.4381261081145Nuitka (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_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 43 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
45 static PyObject *const_str_digest_6793de0cb5d37011350fbe228c76cb49; 44 static PyObject *const_str_digest_6793de0cb5d37011350fbe228c76cb49;
46 static PyObject *const_str_plain_calledRepeatedly; 45 static PyObject *const_str_plain_calledRepeatedly;
63     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 0 ], 9, 1 ); 62     const_str_plain_itertools = UNSTREAM_STRING( &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( &constant_bin[ 9 ], 5, 1 ); 64     const_str_plain_empty = UNSTREAM_STRING( &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( &constant_bin[ 14 ], 10, 1 ); 66     const_str_plain_module_var = UNSTREAM_STRING( &constant_bin[ 14 ], 10, 1 );
n 68     const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd = UNSTREAM_STRING( &constant_bin[ 24 ], 31, 0 ); n
69     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 67     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
70     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 68     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 71     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 55 ], 3, 0 ); n 69     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 24 ], 3, 0 );
72     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 70     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 73     const_str_digest_6793de0cb5d37011350fbe228c76cb49 = UNSTREAM_STRING( &constant_bin[ 58 ], 88, 0 ); n 71     const_str_digest_6793de0cb5d37011350fbe228c76cb49 = UNSTREAM_STRING( &constant_bin[ 27 ], 88, 0 );
74     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 24 ], 16, 1 ); 72     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 115 ], 16, 1 );
75     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 146 ], 8, 0 ); 73     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 131 ], 8, 0 );
76     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 154 ], 4, 1 ); 74     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 139 ], 4, 1 );
77     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 83 ], 1, 1 ); 75     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 52 ], 1, 1 );
78     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 158 ], 6, 1 ); 76     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 143 ], 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_4c307ec3b2ff7ed2a73311b9360283ce; 95 static PyCodeObject *codeobj_4c307ec3b2ff7ed2a73311b9360283ce;
98 static PyCodeObject *codeobj_1519eb3be38a3eac672fb34ac99178e5; 96 static PyCodeObject *codeobj_1519eb3be38a3eac672fb34ac99178e5;
n 99 static PyCodeObject *codeobj_6968c757cc79aabf02b92df3dd25fc53; 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_6793de0cb5d37011350fbe228c76cb49; 102     module_filename_obj = const_str_digest_6793de0cb5d37011350fbe228c76cb49;
106     codeobj_4c307ec3b2ff7ed2a73311b9360283ce = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 103     codeobj_4c307ec3b2ff7ed2a73311b9360283ce = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
107     codeobj_main = codeobj_4c307ec3b2ff7ed2a73311b9360283ce; 104     codeobj_main = codeobj_4c307ec3b2ff7ed2a73311b9360283ce;
108     codeobj_1519eb3be38a3eac672fb34ac99178e5 = 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_1519eb3be38a3eac672fb34ac99178e5 = 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_6968c757cc79aabf02b92df3dd25fc53 = 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     tmp_return_value = var_empty;
149  
150     CHECK_OBJECT( tmp_return_value );
151     Py_INCREF( tmp_return_value ); 126     Py_INCREF( tmp_return_value );
n 152     goto try_return_handler_1; n
153     }
154     // tried codes exits in all cases
155     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
156     return NULL;
157     // Return handler code:
158     try_return_handler_1:;
159     {
160     CHECK_OBJECT( (PyObject *)var_empty );
161     Py_DECREF( var_empty );
162     var_empty = NULL;
163  
164     }
165     {
166     goto function_return_exit; 127     goto function_return_exit;
n 167     } n
168     // End of try:
169     } 128     }
170 129
171     // Return statement must have exited already. 130     // Return statement must have exited already.
172     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 131     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
173     return NULL; 132     return NULL;
176 135
177 CHECK_OBJECT( tmp_return_value ); 136 CHECK_OBJECT( tmp_return_value );
178 assert( had_error || !ERROR_OCCURRED() ); 137 assert( had_error || !ERROR_OCCURRED() );
179 return tmp_return_value; 138 return tmp_return_value;
180 139
n 181 } n
182  
183  
184 static PyObject *impl___main__$$$function_1_calledRepeatedly$$$function_1_empty( struct Nuitka_FunctionObject const *self, PyObject **python_pars )
185 {
186     // Preserve error status for checks
187 #ifndef __NUITKA_NO_ASSERT__
188     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
189 #endif
190  
191     // Local variable declarations.
192     PyObject *tmp_return_value = NULL;
193  
194     // Actual function code.
195     {
196     tmp_return_value = __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker();
197  
198  
199  
200     goto function_return_exit;
201     }
202  
203     // Return statement must have exited already.
204     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly$$$function_1_empty );
205     return NULL;
206  
207 function_return_exit:
208  
209 CHECK_OBJECT( tmp_return_value );
210 assert( had_error || !ERROR_OCCURRED() );
211 return tmp_return_value;
212  
213 }
214  
215  
216  
217 struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals {
218  
219 };
220  
221 #if _NUITKA_EXPERIMENTAL_GENERATOR_GOTO
222 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_context( struct Nuitka_GeneratorObject *generator, PyObject *yield_return_value )
223 #else
224 static void __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_context( struct Nuitka_GeneratorObject *generator )
225 #endif
226 {
227     CHECK_OBJECT( (PyObject *)generator );
228     assert( Nuitka_Generator_Check( (PyObject *)generator ) );
229  
230     // Heap access if used.
231  
232  
233     // Dispatch to yield based on return label index:
234  
235  
236     // Local variable initialization
237     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
238     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
239     PyObject *exception_type = NULL;
240     PyObject *exception_value = NULL;
241     PyTracebackObject *exception_tb = NULL;
242     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
243     static struct Nuitka_FrameObject *cache_m_frame = NULL;
244  
245     // Actual function code.
246     MAKE_OR_REUSE_FRAME( cache_m_frame, codeobj_6968c757cc79aabf02b92df3dd25fc53, 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  
290 #endif
291  
292 #endif
293  
294     // Framed code:
295     {
296     PyObject *tmp_expression_name_1;
297     tmp_expression_name_1 = const_int_pos_1;
298     Py_INCREF( tmp_expression_name_1 );
299     tmp_unused = GENERATOR_YIELD( generator, tmp_expression_name_1 );
300     if ( tmp_unused == NULL )
301     {
302         assert( ERROR_OCCURRED() );
303  
304         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
305  
306  
307         exception_lineno = 27;
308  
309         goto frame_exception_exit_1;
310     }
311     }
312  
313     Nuitka_Frame_MarkAsNotExecuting( generator->m_frame );
314  
315 #if PYTHON_VERSION >= 370
316     Py_CLEAR( generator->m_exc_state.exc_type );
317     Py_CLEAR( generator->m_exc_state.exc_value );
318     Py_CLEAR( generator->m_exc_state.exc_traceback );
319 #elif PYTHON_VERSION >= 300
320     Py_CLEAR( generator->m_frame->m_frame.f_exc_type );
321     Py_CLEAR( generator->m_frame->m_frame.f_exc_value );
322     Py_CLEAR( generator->m_frame->m_frame.f_exc_traceback );
323 #endif
324  
325     // Allow re-use of the frame again.
326     Py_DECREF( generator->m_frame );
327     goto frame_no_exception_1;
328  
329     frame_exception_exit_1:;
330  
331     // If it's not an exit exception, consider and create a traceback for it.
332     if ( !EXCEPTION_MATCH_GENERATOR( exception_type ) )
333     {
334         if ( exception_tb == NULL )
335         {
336             exception_tb = MAKE_TRACEBACK( generator->m_frame, exception_lineno );
337         }
338         else if ( exception_tb->tb_frame != &generator->m_frame->m_frame )
339         {
340             exception_tb = ADD_TRACEBACK( exception_tb, generator->m_frame, exception_lineno );
341         }
342  
343         Nuitka_Frame_AttachLocals(
344             (struct Nuitka_FrameObject *)generator->m_frame,
345             type_description_1
346         );
347  
348  
349         // Release cached frame.
350         if ( generator->m_frame == cache_m_frame )
351         {
352             Py_DECREF( generator->m_frame );
353         }
354         cache_m_frame = NULL;
355  
356         assertFrameObject( generator->m_frame );
357     }
358  
359 #if PYTHON_VERSION >= 370
360     Py_CLEAR( generator->m_exc_state.exc_type );
361     Py_CLEAR( generator->m_exc_state.exc_value );
362     Py_CLEAR( generator->m_exc_state.exc_traceback );
363 #elif PYTHON_VERSION >= 300
364     Py_CLEAR( generator->m_frame->m_frame.f_exc_type );
365     Py_CLEAR( generator->m_frame->m_frame.f_exc_value );
366     Py_CLEAR( generator->m_frame->m_frame.f_exc_traceback );
367 #endif
368  
369     Py_DECREF( generator->m_frame );
370     // Return the error.
371     goto function_exception_exit;
372  
373     frame_no_exception_1:;
374  
375  
376  
377 #if _NUITKA_EXPERIMENTAL_GENERATOR_GOTO
378     return NULL;
379 #else
380     generator->m_yielded = NULL;
381     return;
382 #endif
383  
384     function_exception_exit:
385     assert( exception_type );
386     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
387  
388 #if _NUITKA_EXPERIMENTAL_GENERATOR_GOTO
389     return NULL;
390 #else
391     generator->m_yielded = NULL;
392     return;
393 #endif
394  
395 }
396  
397 static PyObject *__main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_maker( void )
398 {
399     return Nuitka_Generator_New(
400         __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_context,
401         module___main__,
402         const_str_plain_empty,
403 #if PYTHON_VERSION >= 350
404         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
405 #endif
406         codeobj_6968c757cc79aabf02b92df3dd25fc53,
407         0,
408         sizeof(struct __main__$$$function_1_calledRepeatedly$$$function_1_empty$$$genobj_1_empty_locals)
409     );
410 } 140 }
411 141
412 142
413 143
414 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 144 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
418         const_str_plain_calledRepeatedly, 148         const_str_plain_calledRepeatedly,
419 #if PYTHON_VERSION >= 300 149 #if PYTHON_VERSION >= 300
420         NULL, 150         NULL,
421 #endif 151 #endif
422         codeobj_1519eb3be38a3eac672fb34ac99178e5, 152         codeobj_1519eb3be38a3eac672fb34ac99178e5,
t 423         NULL, t
424 #if PYTHON_VERSION >= 300
425         NULL,
426         NULL,
427 #endif
428         module___main__,
429         NULL,
430         0
431     );
432  
433     return (PyObject *)result;
434 }
435  
436  
437  
438 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly$$$function_1_empty(  )
439 {
440     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
441         impl___main__$$$function_1_calledRepeatedly$$$function_1_empty,
442         const_str_plain_empty,
443 #if PYTHON_VERSION >= 300
444         const_str_digest_30e4724e0d508bc0c811d26a46d4b6cd,
445 #endif
446         codeobj_6968c757cc79aabf02b92df3dd25fc53,
447         NULL, 153         NULL,
448 #if PYTHON_VERSION >= 300 154 #if PYTHON_VERSION >= 300
449         NULL, 155         NULL,
450         NULL, 156         NULL,
451 #endif 157 #endif