Construct FunctionCreationGeneratorLocal

Performance Diagrams

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