Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)23743608188.11538461538461257.0CPython 2.761854387240.03846153846155439.7394457552168Nuitka (master)61855119391.96153846153845439.7386839145531Nuitka (develop)61855133543.8846153846154439.73866934383005Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)22385750188.11538461538461257.0CPython 3.570814080240.03846153846155425.9440098023306Nuitka (master)70808688391.96153846153845425.9499620091939Nuitka (develop)70814974543.8846153846154425.94302291936776Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks

Source Code with Construct

from __future__ import print_function

def compiled_func(a,b,c,d,e,f):
    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("some", "random", "values", "to", "check", "call")
    compiled_func("some", "other", "values", "to", "check", "call")
    compiled_func("some", "new", "values", "to", "check", "call")
# 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,b,c,d,e,f):
    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("some", "random", "values", "to", "check", "call") n
30     compiled_func("some", "other", "values", "to", "check", "call")
31     compiled_func("some", "new", "values", "to", "check", "call")
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
29 29
30 PyObject *module___main__; 30 PyObject *module___main__;
31 PyDictObject *moduledict___main__; 31 PyDictObject *moduledict___main__;
32 32
33 /* The declarations of module constants used, if any. */ 33 /* The declarations of module constants used, if any. */
n 34 static PyObject *const_str_plain_to; n
35 static PyObject *const_str_plain_b; 34 static PyObject *const_str_plain_b;
36 static PyObject *const_str_plain_itertools; 35 static PyObject *const_str_plain_itertools;
37 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple; 36 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple;
n 38 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
39 static PyObject *const_str_plain_f; 37 static PyObject *const_str_plain_f;
n 40 static PyObject *const_str_plain_values; n
41 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
n 42 static PyObject *const_str_plain_other; n
43 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
n 44 static PyObject *const_str_plain_check; n
45 static PyObject *const_str_plain_compiled_func; 40 static PyObject *const_str_plain_compiled_func;
n n 41 static PyObject *const_str_plain_a;
46 extern PyObject *const_str_plain_print; 42 extern PyObject *const_str_plain_print;
n 47 static PyObject *const_str_plain_a; n
48 static PyObject *const_str_plain_call;
49 static PyObject *const_int_pos_50000; 43 static PyObject *const_int_pos_50000;
50 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 44 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 51 static PyObject *const_str_plain_random; n
52 static PyObject *const_str_plain_e; 45 static PyObject *const_str_plain_e;
53 static PyObject *const_str_plain_calledRepeatedly; 46 static PyObject *const_str_plain_calledRepeatedly;
54 static PyObject *const_str_angle_module; 47 static PyObject *const_str_angle_module;
55 static PyObject *const_str_plain_None; 48 static PyObject *const_str_plain_None;
56 static PyObject *const_str_plain_x; 49 static PyObject *const_str_plain_x;
57 extern PyObject *const_tuple_empty; 50 extern PyObject *const_tuple_empty;
58 static PyObject *const_str_plain_c; 51 static PyObject *const_str_plain_c;
59 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 52 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 60 static PyObject *const_str_plain_some; n
61 static PyObject *const_str_plain_repeat; 53 static PyObject *const_str_plain_repeat;
n 62 static PyObject *const_str_plain_new; n
63 static PyObject *const_tuple_none_int_pos_50000_tuple; 54 static PyObject *const_tuple_none_int_pos_50000_tuple;
64 static PyObject *const_str_digest_61e9f894c00aafbb299b364ec2082525; 55 static PyObject *const_str_digest_61e9f894c00aafbb299b364ec2082525;
n 65 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
66 extern PyObject *const_str_plain___main__; 56 extern PyObject *const_str_plain___main__;
n 67 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple; n
68 static PyObject *const_str_plain_d; 57 static PyObject *const_str_plain_d;
69 extern PyObject *const_str_plain___doc__; 58 extern PyObject *const_str_plain___doc__;
70 extern PyObject *const_str_plain___cached__; 59 extern PyObject *const_str_plain___cached__;
71 static PyObject *const_str_plain_print_function; 60 static PyObject *const_str_plain_print_function;
72 static PyObject *module_filename_obj; 61 static PyObject *module_filename_obj;
75 static bool constants_created = false; 64 static bool constants_created = false;
76 65
77 /* Function to create module private constants. */ 66 /* Function to create module private constants. */
78 static void createModuleConstants( void ) 67 static void createModuleConstants( void )
79 { 68 {
n 80     const_str_plain_to = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 2, 1 ); n
81     const_str_plain_b = UNSTREAM_STRING_ASCII( &constant_bin[ 2 ], 1, 1 ); 69     const_str_plain_b = UNSTREAM_STRING_ASCII( &constant_bin[ 0 ], 1, 1 );
82     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 9, 1 ); 70     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 1 ], 9, 1 );
83     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 ); 71     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 );
n 84     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 12 ], 1, 1 ); n 72     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 10 ], 1, 1 );
85     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 73     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a );
86     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 74     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b );
n 87     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 13 ], 1, 1 ); n 75     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 11 ], 1, 1 );
88     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 76     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c );
n 89     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 1, 1 ); n 77     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 12 ], 1, 1 );
90     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 78     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d );
n 91     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 5 ], 1, 1 ); n 79     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 );
92     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 80     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e );
n 93     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 15 ], 1, 1 ); n 81     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 13 ], 1, 1 );
94     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 82     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 95     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 ); n
96     const_str_plain_some = UNSTREAM_STRING_ASCII( &constant_bin[ 16 ], 4, 1 );
97     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
98     const_str_plain_new = UNSTREAM_STRING_ASCII( &constant_bin[ 20 ], 3, 1 );
99     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
100     const_str_plain_values = UNSTREAM_STRING_ASCII( &constant_bin[ 23 ], 6, 1 );
101     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
102     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
103     const_str_plain_check = UNSTREAM_STRING_ASCII( &constant_bin[ 29 ], 5, 1 );
104     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
105     const_str_plain_call = UNSTREAM_STRING_ASCII( &constant_bin[ 34 ], 4, 1 );
106     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
107     const_str_plain_other = UNSTREAM_STRING_ASCII( &constant_bin[ 38 ], 5, 1 );
108     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 43 ], 13, 1 ); 83     const_str_plain_compiled_func = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 13, 1 );
109     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 84     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
110     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 85     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 111     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 56 ], 3, 0 ); n 86     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 27 ], 3, 0 );
112     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 87     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 113     const_str_plain_random = UNSTREAM_STRING_ASCII( &constant_bin[ 59 ], 6, 1 ); n
114     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 65 ], 16, 1 ); 88     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 30 ], 16, 1 );
115     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 81 ], 8, 0 ); 89     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 46 ], 8, 0 );
116     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 89 ], 4, 1 ); 90     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 54 ], 4, 1 );
117     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 93 ], 1, 1 ); 91     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 58 ], 1, 1 );
118     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 94 ], 6, 1 ); 92     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 59 ], 6, 1 );
119     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 93     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
120     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 94     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
121     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 95     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
n 122     const_str_digest_61e9f894c00aafbb299b364ec2082525 = UNSTREAM_STRING_ASCII( &constant_bin[ 100 ], 86, 0 ); n 96     const_str_digest_61e9f894c00aafbb299b364ec2082525 = UNSTREAM_STRING_ASCII( &constant_bin[ 65 ], 86, 0 );
123     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 );
124     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
125     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
126     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
127     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
128     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
129     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
130     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
131     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
132     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
133     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
134     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
135     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
136     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
137     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 186 ], 14, 1 ); 97     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 151 ], 14, 1 );
138 98
139     constants_created = true; 99     constants_created = true;
140 } 100 }
141 101
142 /* Function to verify module private constants for non-corruption. */ 102 /* Function to verify module private constants for non-corruption. */
150 } 110 }
151 #endif 111 #endif
152 112
153 // The module code objects. 113 // The module code objects.
154 static PyCodeObject *codeobj_83497842ffce47a45a6ae7791599821d; 114 static PyCodeObject *codeobj_83497842ffce47a45a6ae7791599821d;
n 155 static PyCodeObject *codeobj_aab1910daffc667857d078204bca8d16; n 115 static PyCodeObject *codeobj_3f71a9e58b37dbf29bd043180ffa97fd;
156 static PyCodeObject *codeobj_5fa4f04f8b8d149e6b63bedb3f10d29f; 116 static PyCodeObject *codeobj_5fa4f04f8b8d149e6b63bedb3f10d29f;
157 /* For use in "MainProgram.c". */ 117 /* For use in "MainProgram.c". */
158 PyCodeObject *codeobj_main = NULL; 118 PyCodeObject *codeobj_main = NULL;
159 119
160 static void createModuleCodeObjects(void) 120 static void createModuleCodeObjects(void)
161 { 121 {
162     module_filename_obj = const_str_digest_61e9f894c00aafbb299b364ec2082525; 122     module_filename_obj = const_str_digest_61e9f894c00aafbb299b364ec2082525;
163     codeobj_83497842ffce47a45a6ae7791599821d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 123     codeobj_83497842ffce47a45a6ae7791599821d = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
164     codeobj_main = codeobj_83497842ffce47a45a6ae7791599821d; 124     codeobj_main = codeobj_83497842ffce47a45a6ae7791599821d;
n 165     codeobj_aab1910daffc667857d078204bca8d16 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 125     codeobj_3f71a9e58b37dbf29bd043180ffa97fd = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
166     codeobj_5fa4f04f8b8d149e6b63bedb3f10d29f = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 126     codeobj_5fa4f04f8b8d149e6b63bedb3f10d29f = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
167 } 127 }
168 128
169 // The module function declarations. 129 // The module function declarations.
170 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  ); 130 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  );
276 #ifndef __NUITKA_NO_ASSERT__ 236 #ifndef __NUITKA_NO_ASSERT__
277     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 237     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
278 #endif 238 #endif
279 239
280     // Local variable declarations. 240     // Local variable declarations.
n 281     struct Nuitka_FrameObject *frame_aab1910daffc667857d078204bca8d16; n
282     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
283     PyObject *exception_type = NULL;
284     PyObject *exception_value = NULL;
285     PyTracebackObject *exception_tb = NULL;
286     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
287     static struct Nuitka_FrameObject *cache_frame_aab1910daffc667857d078204bca8d16 = NULL;
288     PyObject *tmp_return_value = NULL; 241     PyObject *tmp_return_value = NULL;
289 242
290     // Actual function body. 243     // Actual function body.
n 291     MAKE_OR_REUSE_FRAME( cache_frame_aab1910daffc667857d078204bca8d16, codeobj_aab1910daffc667857d078204bca8d16, module___main__, 0 ); n
292     frame_aab1910daffc667857d078204bca8d16 = cache_frame_aab1910daffc667857d078204bca8d16;
293  
294     // Push the new frame as the currently active one.
295     pushFrameStack( frame_aab1910daffc667857d078204bca8d16 );
296  
297     // Mark the frame object as in use, ref count 1 will be up for reuse.
298     assert( Py_REFCNT( frame_aab1910daffc667857d078204bca8d16 ) == 2 ); // Frame stack
299  
300     // Framed code:
301     {
302         PyObject *tmp_called_name_1;
303         PyObject *tmp_mvar_value_1;
304         PyObject *tmp_call_result_1;
305         tmp_mvar_value_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
306  
307         if (unlikely( tmp_mvar_value_1 == NULL ))
308         {
309             tmp_mvar_value_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
310         }
311  
312         if ( tmp_mvar_value_1 == NULL )
313         {
314  
315             exception_type = PyExc_NameError;
316             Py_INCREF( exception_type );
317             exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
318             exception_tb = NULL;
319             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
320             CHAIN_EXCEPTION( exception_value );
321  
322             exception_lineno = 29;
323  
324             goto frame_exception_exit_1;
325         }
326  
327         tmp_called_name_1 = tmp_mvar_value_1;
328         frame_aab1910daffc667857d078204bca8d16->m_frame.f_lineno = 29;
329         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
330  
331         if ( tmp_call_result_1 == NULL )
332         {
333             assert( ERROR_OCCURRED() );
334  
335             FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
336  
337  
338             exception_lineno = 29;
339  
340             goto frame_exception_exit_1;
341         }
342         Py_DECREF( tmp_call_result_1 );
343     }
344     {
345         PyObject *tmp_called_name_2;
346         PyObject *tmp_mvar_value_2;
347         PyObject *tmp_call_result_2;
348         tmp_mvar_value_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
349  
350         if (unlikely( tmp_mvar_value_2 == NULL ))
351         {
352             tmp_mvar_value_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
353         }
354  
355         if ( tmp_mvar_value_2 == NULL )
356         {
357  
358             exception_type = PyExc_NameError;
359             Py_INCREF( exception_type );
360             exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
361             exception_tb = NULL;
362             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
363             CHAIN_EXCEPTION( exception_value );
364  
365             exception_lineno = 30;
366  
367             goto frame_exception_exit_1;
368         }
369  
370         tmp_called_name_2 = tmp_mvar_value_2;
371         frame_aab1910daffc667857d078204bca8d16->m_frame.f_lineno = 30;
372         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
373  
374         if ( tmp_call_result_2 == NULL )
375         {
376             assert( ERROR_OCCURRED() );
377  
378             FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
379  
380  
381             exception_lineno = 30;
382  
383             goto frame_exception_exit_1;
384         }
385         Py_DECREF( tmp_call_result_2 );
386     }
387     {
388         PyObject *tmp_called_name_3;
389         PyObject *tmp_mvar_value_3;
390         PyObject *tmp_call_result_3;
391         tmp_mvar_value_3 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
392  
393         if (unlikely( tmp_mvar_value_3 == NULL ))
394         {
395             tmp_mvar_value_3 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
396         }
397  
398         if ( tmp_mvar_value_3 == NULL )
399         {
400  
401             exception_type = PyExc_NameError;
402             Py_INCREF( exception_type );
403             exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
404             exception_tb = NULL;
405             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
406             CHAIN_EXCEPTION( exception_value );
407  
408             exception_lineno = 31;
409  
410             goto frame_exception_exit_1;
411         }
412  
413         tmp_called_name_3 = tmp_mvar_value_3;
414         frame_aab1910daffc667857d078204bca8d16->m_frame.f_lineno = 31;
415         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
416  
417         if ( tmp_call_result_3 == NULL )
418         {
419             assert( ERROR_OCCURRED() );
420  
421             FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
422  
423  
424             exception_lineno = 31;
425  
426             goto frame_exception_exit_1;
427         }
428         Py_DECREF( tmp_call_result_3 );
429     }
430  
431 #if 0
432     RESTORE_FRAME_EXCEPTION( frame_aab1910daffc667857d078204bca8d16 );
433 #endif
434  
435     // Put the previous frame back on top.
436     popFrameStack();
437  
438     goto frame_no_exception_1;
439  
440     frame_exception_exit_1:;
441  
442 #if 0
443     RESTORE_FRAME_EXCEPTION( frame_aab1910daffc667857d078204bca8d16 );
444 #endif
445  
446     if ( exception_tb == NULL )
447     {
448         exception_tb = MAKE_TRACEBACK( frame_aab1910daffc667857d078204bca8d16, exception_lineno );
449     }
450     else if ( exception_tb->tb_frame != &frame_aab1910daffc667857d078204bca8d16->m_frame )
451     {
452         exception_tb = ADD_TRACEBACK( exception_tb, frame_aab1910daffc667857d078204bca8d16, exception_lineno );
453     }
454  
455     // Attachs locals to frame if any.
456     Nuitka_Frame_AttachLocals(
457         (struct Nuitka_FrameObject *)frame_aab1910daffc667857d078204bca8d16,
458         type_description_1
459     );
460  
461  
462     // Release cached frame.
463     if ( frame_aab1910daffc667857d078204bca8d16 == cache_frame_aab1910daffc667857d078204bca8d16 )
464     {
465         Py_DECREF( frame_aab1910daffc667857d078204bca8d16 );
466     }
467     cache_frame_aab1910daffc667857d078204bca8d16 = NULL;
468  
469     assertFrameObject( frame_aab1910daffc667857d078204bca8d16 );
470  
471     // Put the previous frame back on top.
472     popFrameStack();
473  
474     // Return the error.
475     goto function_exception_exit;
476  
477     frame_no_exception_1:;
478     tmp_return_value = Py_None; 244     tmp_return_value = Py_None;
479     Py_INCREF( tmp_return_value ); 245     Py_INCREF( tmp_return_value );
480     goto function_return_exit; 246     goto function_return_exit;
481 247
482     // Return statement must have exited already. 248     // Return statement must have exited already.
483     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly ); 249     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly );
484     return NULL; 250     return NULL;
485 251
n 486 function_exception_exit: n
487     assert( exception_type );
488     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
489  
490     return NULL;
491 252
492 function_return_exit: 253 function_return_exit:
493    // Function cleanup code if any. 254    // Function cleanup code if any.
494 255
495 256
532         impl___main__$$$function_2_calledRepeatedly, 293         impl___main__$$$function_2_calledRepeatedly,
533         const_str_plain_calledRepeatedly, 294         const_str_plain_calledRepeatedly,
534 #if PYTHON_VERSION >= 300 295 #if PYTHON_VERSION >= 300
535         NULL, 296         NULL,
536 #endif 297 #endif
t 537         codeobj_aab1910daffc667857d078204bca8d16, t 298         codeobj_3f71a9e58b37dbf29bd043180ffa97fd,
538         NULL, 299         NULL,
539 #if PYTHON_VERSION >= 300 300 #if PYTHON_VERSION >= 300
540         NULL, 301         NULL,
541         NULL, 302         NULL,
542 #endif 303 #endif