Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

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