Construct CallCompiledFunctionPosArgsDefaults

Performance Diagrams

Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)20339374388.11538461538461257.0CPython 2.764250310240.03846153846155426.0537892431627Nuitka (master)64250258391.96153846153845426.0538524211141Nuitka (develop)64250310543.8846153846154426.0537892431627Nuitka (factory)Construct CallCompiledFunctionPosArgsDefaultsTicks Construct CallCompiledFunctionPosArgsDefaults 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)20134105388.11538461538461257.0CPython 3.573650324240.03846153846155413.7208631249875Nuitka (master)73051558391.96153846153845414.45575691927297Nuitka (develop)73051124543.8846153846154414.45628958797283Nuitka (factory)Construct CallCompiledFunctionPosArgsDefaultsTicks

Source Code with Construct

from __future__ import print_function

def compiled_func(a = 1,b = 2,c = 3,d = 4,e = 5,f = 6):
    return a, b, c, d, e, f

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    compiled_func()
    compiled_func()
    compiled_func()
# construct_alternative



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

print("OK.")

Source Code without Construct

from __future__ import print_function

def compiled_func(a = 1,b = 2,c = 3,d = 4,e = 5,f = 6):
    return a, b, c, d, e, f

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin



# construct_alternative
    pass
# construct_end

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

print("OK.")

Context Diff of Source Code


Construct
Baseline
24 24
25 def calledRepeatedly(): 25 def calledRepeatedly():
26     # This is supposed to make a call to a non-compiled function, which is 26     # This is supposed to make a call to a non-compiled function, which is
27     # being optimized separately. 27     # being optimized separately.
28 # construct_begin 28 # construct_begin
n 29     compiled_func() n
30     compiled_func()
31     compiled_func()
32 # construct_alternative
33 29
34 30
t t 31  
32 # construct_alternative
33     pass
34 # construct_end
35 35
36 import itertools 36 import itertools
37 for x in itertools.repeat(None, 50000): 37 for x in itertools.repeat(None, 50000):
38     calledRepeatedly() 38     calledRepeatedly()
39 39

Context Diff of Generated Code


Construct
Baseline
37 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple; 37 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple;
38 static PyObject *const_str_plain_f; 38 static PyObject *const_str_plain_f;
39 extern PyObject *const_int_pos_1; 39 extern PyObject *const_int_pos_1;
40 extern PyObject *const_str_plain___file__; 40 extern PyObject *const_str_plain___file__;
41 extern PyObject *const_int_0; 41 extern PyObject *const_int_0;
n n 42 static PyObject *const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple;
43 static PyObject *const_str_plain_a;
42 static PyObject *const_str_plain_compiled_func; 44 static PyObject *const_str_plain_compiled_func;
n 43 static PyObject *const_str_plain_a; n
44 static PyObject *const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple;
45 extern PyObject *const_str_plain_print; 45 extern PyObject *const_str_plain_print;
46 static PyObject *const_int_pos_50000; 46 static PyObject *const_int_pos_50000;
47 static PyObject *const_int_pos_3; 47 static PyObject *const_int_pos_3;
48 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 48 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
49 static PyObject *const_str_plain_e; 49 static PyObject *const_str_plain_e;
85     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 85     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d );
86     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 ); 86     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 );
87     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 87     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e );
88     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 87 ], 1, 1 ); 88     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 87 ], 1, 1 );
89     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 89     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 90     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 96 ], 13, 1 ); n
91     const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple = PyTuple_New( 6 ); 90     const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple = PyTuple_New( 6 );
92     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 0, const_int_pos_1 ); Py_INCREF( const_int_pos_1 ); 91     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 0, const_int_pos_1 ); Py_INCREF( const_int_pos_1 );
93     const_int_pos_2 = PyLong_FromUnsignedLong( 2ul ); 92     const_int_pos_2 = PyLong_FromUnsignedLong( 2ul );
94     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 1, const_int_pos_2 ); Py_INCREF( const_int_pos_2 ); 93     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 1, const_int_pos_2 ); Py_INCREF( const_int_pos_2 );
95     const_int_pos_3 = PyLong_FromUnsignedLong( 3ul ); 94     const_int_pos_3 = PyLong_FromUnsignedLong( 3ul );
98     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 3, const_int_pos_4 ); Py_INCREF( const_int_pos_4 ); 97     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 3, const_int_pos_4 ); Py_INCREF( const_int_pos_4 );
99     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul ); 98     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul );
100     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 4, const_int_pos_5 ); Py_INCREF( const_int_pos_5 ); 99     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 4, const_int_pos_5 ); Py_INCREF( const_int_pos_5 );
101     const_int_pos_6 = PyLong_FromUnsignedLong( 6ul ); 100     const_int_pos_6 = PyLong_FromUnsignedLong( 6ul );
102     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 5, const_int_pos_6 ); Py_INCREF( const_int_pos_6 ); 101     PyTuple_SET_ITEM( const_tuple_int_pos_1_int_pos_2_int_pos_3_int_pos_4_int_pos_5_int_pos_6_tuple, 5, const_int_pos_6 ); Py_INCREF( const_int_pos_6 );
n n 102     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 96 ], 13, 1 );
103     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 103     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
104     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 104     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
105     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 109 ], 3, 0 ); 105     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 109 ], 3, 0 );
106     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 106     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
107     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 112 ], 16, 1 ); 107     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 112 ], 16, 1 );
128 } 128 }
129 #endif 129 #endif
130 130
131 // The module code objects. 131 // The module code objects.
132 static PyCodeObject *codeobj_715867e0d64df30bb9e764482383204d; 132 static PyCodeObject *codeobj_715867e0d64df30bb9e764482383204d;
n 133 static PyCodeObject *codeobj_e72e53e2fb8edca393eaeff292c81bd1; n 133 static PyCodeObject *codeobj_f0c27ce45d2f98f55fbe517caa8791d0;
134 static PyCodeObject *codeobj_eac101331830f02270736a5ba8c88bf3; 134 static PyCodeObject *codeobj_eac101331830f02270736a5ba8c88bf3;
135 /* For use in "MainProgram.c". */ 135 /* For use in "MainProgram.c". */
136 PyCodeObject *codeobj_main = NULL; 136 PyCodeObject *codeobj_main = NULL;
137 137
138 static void createModuleCodeObjects(void) 138 static void createModuleCodeObjects(void)
139 { 139 {
140     module_filename_obj = const_str_digest_957cbddc8dbd6ed146e07c973f1d764d; 140     module_filename_obj = const_str_digest_957cbddc8dbd6ed146e07c973f1d764d;
141     codeobj_715867e0d64df30bb9e764482383204d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 141     codeobj_715867e0d64df30bb9e764482383204d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
142     codeobj_main = codeobj_715867e0d64df30bb9e764482383204d; 142     codeobj_main = codeobj_715867e0d64df30bb9e764482383204d;
n 143     codeobj_e72e53e2fb8edca393eaeff292c81bd1 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 143     codeobj_f0c27ce45d2f98f55fbe517caa8791d0 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
144     codeobj_eac101331830f02270736a5ba8c88bf3 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 144     codeobj_eac101331830f02270736a5ba8c88bf3 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
145 } 145 }
146 146
147 // The module function declarations. 147 // The module function declarations.
148 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func( PyObject *defaults ); 148 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func( PyObject *defaults );
266 #ifndef __NUITKA_NO_ASSERT__ 266 #ifndef __NUITKA_NO_ASSERT__
267     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 267     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
268 #endif 268 #endif
269 269
270     // Local variable declarations. 270     // Local variable declarations.
n 271     struct Nuitka_FrameObject *frame_e72e53e2fb8edca393eaeff292c81bd1; n
272     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
273     PyObject *exception_type = NULL;
274     PyObject *exception_value = NULL;
275     PyTracebackObject *exception_tb = NULL;
276     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
277     static struct Nuitka_FrameObject *cache_frame_e72e53e2fb8edca393eaeff292c81bd1 = NULL;
278     PyObject *tmp_return_value = NULL; 271     PyObject *tmp_return_value = NULL;
279 272
280     // Actual function code. 273     // Actual function code.
n 281     MAKE_OR_REUSE_FRAME( cache_frame_e72e53e2fb8edca393eaeff292c81bd1, codeobj_e72e53e2fb8edca393eaeff292c81bd1, module___main__, 0 ); n
282     frame_e72e53e2fb8edca393eaeff292c81bd1 = cache_frame_e72e53e2fb8edca393eaeff292c81bd1;
283  
284     // Push the new frame as the currently active one.
285     pushFrameStack( frame_e72e53e2fb8edca393eaeff292c81bd1 );
286  
287     // Mark the frame object as in use, ref count 1 will be up for reuse.
288     assert( Py_REFCNT( frame_e72e53e2fb8edca393eaeff292c81bd1 ) == 2 ); // Frame stack
289  
290     // Framed code:
291     {
292     PyObject *tmp_called_name_1;
293     PyObject *tmp_mvar_value_1;
294     PyObject *tmp_call_result_1;
295     tmp_mvar_value_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
296  
297     if (unlikely( tmp_mvar_value_1 == NULL ))
298     {
299         tmp_mvar_value_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
300     }
301  
302     if ( tmp_mvar_value_1 == NULL )
303     {
304  
305         exception_type = PyExc_NameError;
306         Py_INCREF( exception_type );
307         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
308         exception_tb = NULL;
309         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
310         CHAIN_EXCEPTION( exception_value );
311  
312         exception_lineno = 29;
313  
314         goto frame_exception_exit_1;
315     }
316  
317     tmp_called_name_1 = tmp_mvar_value_1;
318     frame_e72e53e2fb8edca393eaeff292c81bd1->m_frame.f_lineno = 29;
319     tmp_call_result_1 = CALL_FUNCTION_NO_ARGS( tmp_called_name_1 );
320     if ( tmp_call_result_1 == NULL )
321     {
322         assert( ERROR_OCCURRED() );
323  
324         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
325  
326  
327         exception_lineno = 29;
328  
329         goto frame_exception_exit_1;
330     }
331     Py_DECREF( tmp_call_result_1 );
332     }
333     {
334     PyObject *tmp_called_name_2;
335     PyObject *tmp_mvar_value_2;
336     PyObject *tmp_call_result_2;
337     tmp_mvar_value_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
338  
339     if (unlikely( tmp_mvar_value_2 == NULL ))
340     {
341         tmp_mvar_value_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
342     }
343  
344     if ( tmp_mvar_value_2 == NULL )
345     {
346  
347         exception_type = PyExc_NameError;
348         Py_INCREF( exception_type );
349         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
350         exception_tb = NULL;
351         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
352         CHAIN_EXCEPTION( exception_value );
353  
354         exception_lineno = 30;
355  
356         goto frame_exception_exit_1;
357     }
358  
359     tmp_called_name_2 = tmp_mvar_value_2;
360     frame_e72e53e2fb8edca393eaeff292c81bd1->m_frame.f_lineno = 30;
361     tmp_call_result_2 = CALL_FUNCTION_NO_ARGS( tmp_called_name_2 );
362     if ( tmp_call_result_2 == NULL )
363     {
364         assert( ERROR_OCCURRED() );
365  
366         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
367  
368  
369         exception_lineno = 30;
370  
371         goto frame_exception_exit_1;
372     }
373     Py_DECREF( tmp_call_result_2 );
374     }
375     {
376     PyObject *tmp_called_name_3;
377     PyObject *tmp_mvar_value_3;
378     PyObject *tmp_call_result_3;
379     tmp_mvar_value_3 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
380  
381     if (unlikely( tmp_mvar_value_3 == NULL ))
382     {
383         tmp_mvar_value_3 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
384     }
385  
386     if ( tmp_mvar_value_3 == NULL )
387     {
388  
389         exception_type = PyExc_NameError;
390         Py_INCREF( exception_type );
391         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
392         exception_tb = NULL;
393         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
394         CHAIN_EXCEPTION( exception_value );
395  
396         exception_lineno = 31;
397  
398         goto frame_exception_exit_1;
399     }
400  
401     tmp_called_name_3 = tmp_mvar_value_3;
402     frame_e72e53e2fb8edca393eaeff292c81bd1->m_frame.f_lineno = 31;
403     tmp_call_result_3 = CALL_FUNCTION_NO_ARGS( tmp_called_name_3 );
404     if ( tmp_call_result_3 == NULL )
405     {
406         assert( ERROR_OCCURRED() );
407  
408         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
409  
410  
411         exception_lineno = 31;
412  
413         goto frame_exception_exit_1;
414     }
415     Py_DECREF( tmp_call_result_3 );
416     }
417  
418 #if 0
419     RESTORE_FRAME_EXCEPTION( frame_e72e53e2fb8edca393eaeff292c81bd1 );
420 #endif
421  
422     // Put the previous frame back on top.
423     popFrameStack();
424  
425     goto frame_no_exception_1;
426  
427     frame_exception_exit_1:;
428  
429 #if 0
430     RESTORE_FRAME_EXCEPTION( frame_e72e53e2fb8edca393eaeff292c81bd1 );
431 #endif
432  
433     if ( exception_tb == NULL )
434     {
435         exception_tb = MAKE_TRACEBACK( frame_e72e53e2fb8edca393eaeff292c81bd1, exception_lineno );
436     }
437     else if ( exception_tb->tb_frame != &frame_e72e53e2fb8edca393eaeff292c81bd1->m_frame )
438     {
439         exception_tb = ADD_TRACEBACK( exception_tb, frame_e72e53e2fb8edca393eaeff292c81bd1, exception_lineno );
440     }
441  
442     // Attachs locals to frame if any.
443     Nuitka_Frame_AttachLocals(
444         (struct Nuitka_FrameObject *)frame_e72e53e2fb8edca393eaeff292c81bd1,
445         type_description_1
446     );
447  
448  
449     // Release cached frame.
450     if ( frame_e72e53e2fb8edca393eaeff292c81bd1 == cache_frame_e72e53e2fb8edca393eaeff292c81bd1 )
451     {
452         Py_DECREF( frame_e72e53e2fb8edca393eaeff292c81bd1 );
453     }
454     cache_frame_e72e53e2fb8edca393eaeff292c81bd1 = NULL;
455  
456     assertFrameObject( frame_e72e53e2fb8edca393eaeff292c81bd1 );
457  
458     // Put the previous frame back on top.
459     popFrameStack();
460  
461     // Return the error.
462     goto function_exception_exit;
463  
464     frame_no_exception_1:;
465     { 274     {
466     tmp_return_value = Py_None; 275     tmp_return_value = Py_None;
467     Py_INCREF( tmp_return_value ); 276     Py_INCREF( tmp_return_value );
468     goto function_return_exit; 277     goto function_return_exit;
469     } 278     }
470 279
471     // Return statement must have exited already. 280     // Return statement must have exited already.
472     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly ); 281     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly );
473     return NULL; 282     return NULL;
474 283
n 475 function_exception_exit: n
476     assert( exception_type );
477     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
478  
479     return NULL;
480 function_return_exit: 284 function_return_exit:
481 285
482 CHECK_OBJECT( tmp_return_value ); 286 CHECK_OBJECT( tmp_return_value );
483 assert( had_error || !ERROR_OCCURRED() ); 287 assert( had_error || !ERROR_OCCURRED() );
484 return tmp_return_value; 288 return tmp_return_value;
517         impl___main__$$$function_2_calledRepeatedly, 321         impl___main__$$$function_2_calledRepeatedly,
518         const_str_plain_calledRepeatedly, 322         const_str_plain_calledRepeatedly,
519 #if PYTHON_VERSION >= 300 323 #if PYTHON_VERSION >= 300
520         NULL, 324         NULL,
521 #endif 325 #endif
t 522         codeobj_e72e53e2fb8edca393eaeff292c81bd1, t 326         codeobj_f0c27ce45d2f98f55fbe517caa8791d0,
523         NULL, 327         NULL,
524 #if PYTHON_VERSION >= 300 328 #if PYTHON_VERSION >= 300
525         NULL, 329         NULL,
526         NULL, 330         NULL,
527 #endif 331 #endif