Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)23908609788.11538461538461257.0CPython 2.761855400240.03846153846155440.18267939606585Nuitka (master)61855424391.96153846153845440.1826545900679Nuitka (develop)61855308543.8846153846154440.1827744857246Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)22205573588.11538461538461257.0CPython 3.571106497240.03846153846155424.984308109715Nuitka (master)71107233391.96153846153845424.9834890499277Nuitka (develop)71116415543.8846153846154424.97327083394003Nuitka (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_plain___package__; 36 static PyObject *const_str_plain___package__;
38 static PyObject *const_str_plain___spec__; 37 static PyObject *const_str_plain___spec__;
n 39 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
40 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple; 38 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple;
41 static PyObject *const_str_plain_f; 39 static PyObject *const_str_plain_f;
n 42 static PyObject *const_str_plain_values; n
43 extern PyObject *const_dict_empty; 40 extern PyObject *const_dict_empty;
44 extern PyObject *const_str_plain___file__; 41 extern PyObject *const_str_plain___file__;
n 45 static PyObject *const_str_plain_other; n
46 extern PyObject *const_int_0; 42 extern PyObject *const_int_0;
n 47 static PyObject *const_str_plain_check; n
48 static PyObject *const_str_digest_4dcb3535bb83044631d5e7ab8c194812; 43 static PyObject *const_str_digest_4dcb3535bb83044631d5e7ab8c194812;
49 static PyObject *const_str_plain_compiled_func; 44 static PyObject *const_str_plain_compiled_func;
50 extern PyObject *const_str_plain_print; 45 extern PyObject *const_str_plain_print;
n 51 static PyObject *const_str_plain_call; n
52 static PyObject *const_str_plain_a; 46 static PyObject *const_str_plain_a;
53 static PyObject *const_int_pos_50000; 47 static PyObject *const_int_pos_50000;
54 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 48 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 55 static PyObject *const_str_plain_random; n
56 static PyObject *const_str_plain_e; 49 static PyObject *const_str_plain_e;
57 static PyObject *const_str_plain_calledRepeatedly; 50 static PyObject *const_str_plain_calledRepeatedly;
58 static PyObject *const_str_angle_module; 51 static PyObject *const_str_angle_module;
59 static PyObject *const_str_plain_x; 52 static PyObject *const_str_plain_x;
60 extern PyObject *const_tuple_empty; 53 extern PyObject *const_tuple_empty;
61 static PyObject *const_str_plain_c; 54 static PyObject *const_str_plain_c;
62 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 55 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 63 static PyObject *const_str_plain_some; n
64 static PyObject *const_str_plain_repeat; 56 static PyObject *const_str_plain_repeat;
n 65 static PyObject *const_str_plain_new; n
66 static PyObject *const_tuple_none_int_pos_50000_tuple; 57 static PyObject *const_tuple_none_int_pos_50000_tuple;
67 extern PyObject *const_str_plain___loader__; 58 extern PyObject *const_str_plain___loader__;
68 extern PyObject *const_str_plain___main__; 59 extern PyObject *const_str_plain___main__;
n 69 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
70 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
71 static PyObject *const_str_plain_d; 60 static PyObject *const_str_plain_d;
72 extern PyObject *const_str_plain___doc__; 61 extern PyObject *const_str_plain___doc__;
73 extern PyObject *const_str_plain___cached__; 62 extern PyObject *const_str_plain___cached__;
74 static PyObject *const_str_plain_print_function; 63 static PyObject *const_str_plain_print_function;
75 static PyObject *module_filename_obj; 64 static PyObject *module_filename_obj;
76 65
77 static bool constants_created = false; 66 static bool constants_created = false;
78 67
79 static void createModuleConstants( void ) 68 static void createModuleConstants( void )
80 { 69 {
n 81     const_str_plain_to = UNSTREAM_STRING( &constant_bin[ 0 ], 2, 1 ); n
82     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 ); 70     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 0 ], 1, 1 );
83     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 3 ], 9, 1 ); 71     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 1 ], 9, 1 );
84     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 12 ], 11, 1 ); 72     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 10 ], 11, 1 );
85     const_str_plain___spec__ = UNSTREAM_STRING( &constant_bin[ 23 ], 8, 1 ); 73     const_str_plain___spec__ = UNSTREAM_STRING( &constant_bin[ 21 ], 8, 1 );
86     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 );
87     const_str_plain_some = UNSTREAM_STRING( &constant_bin[ 31 ], 4, 1 );
88     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
89     const_str_plain_new = UNSTREAM_STRING( &constant_bin[ 35 ], 3, 1 );
90     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
91     const_str_plain_values = UNSTREAM_STRING( &constant_bin[ 38 ], 6, 1 );
92     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
93     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
94     const_str_plain_check = UNSTREAM_STRING( &constant_bin[ 44 ], 5, 1 );
95     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
96     const_str_plain_call = UNSTREAM_STRING( &constant_bin[ 49 ], 4, 1 );
97     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
98     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 ); 74     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 );
n 99     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 15 ], 1, 1 ); n 75     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 13 ], 1, 1 );
100     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 76     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a );
101     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 77     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b );
n 102     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 16 ], 1, 1 ); n 78     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 14 ], 1, 1 );
103     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 79     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c );
n 104     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 53 ], 1, 1 ); n 80     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 29 ], 1, 1 );
105     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 81     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d );
n 106     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 5 ], 1, 1 ); n 82     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 3 ], 1, 1 );
107     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 83     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e );
n 108     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 54 ], 1, 1 ); n 84     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 30 ], 1, 1 );
109     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 85     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 110     const_str_plain_other = UNSTREAM_STRING( &constant_bin[ 55 ], 5, 1 ); n
111     const_str_digest_4dcb3535bb83044631d5e7ab8c194812 = UNSTREAM_STRING( &constant_bin[ 60 ], 93, 0 ); 86     const_str_digest_4dcb3535bb83044631d5e7ab8c194812 = UNSTREAM_STRING( &constant_bin[ 31 ], 93, 0 );
112     const_str_plain_compiled_func = UNSTREAM_STRING( &constant_bin[ 153 ], 13, 1 ); 87     const_str_plain_compiled_func = UNSTREAM_STRING( &constant_bin[ 124 ], 13, 1 );
113     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 88     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
114     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 89     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 115     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 166 ], 3, 0 ); n 90     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 137 ], 3, 0 );
116     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 91     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 117     const_str_plain_random = UNSTREAM_STRING( &constant_bin[ 169 ], 6, 1 ); n
118     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 175 ], 16, 1 ); 92     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 140 ], 16, 1 );
119     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 191 ], 8, 0 ); 93     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 156 ], 8, 0 );
120     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 85 ], 1, 1 ); 94     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 56 ], 1, 1 );
121     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 199 ], 6, 1 ); 95     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 164 ], 6, 1 );
122     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 96     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
123     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 97     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
124     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 98     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
n 125     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 ); n
126     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
127     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
128     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
129     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
130     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
131     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
132     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
133     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
134     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
135     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
136     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
137     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
138     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
139     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 205 ], 14, 1 ); 99     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 170 ], 14, 1 );
140 100
141     constants_created = true; 101     constants_created = true;
142 } 102 }
143 103
144 #ifndef __NUITKA_NO_ASSERT__ 104 #ifndef __NUITKA_NO_ASSERT__
151 } 111 }
152 #endif 112 #endif
153 113
154 // The module code objects. 114 // The module code objects.
155 static PyCodeObject *codeobj_15b7397a995891ef383f7a1ee1c050a7; 115 static PyCodeObject *codeobj_15b7397a995891ef383f7a1ee1c050a7;
n 156 static PyCodeObject *codeobj_ec2cd00e9b7fca439ee2118ee76a0733; n 116 static PyCodeObject *codeobj_28d328bf741d5f52bdadfdf51ec3b1be;
157 static PyCodeObject *codeobj_89114cdb83b200bd7cd96dca4f66f1cb; 117 static PyCodeObject *codeobj_89114cdb83b200bd7cd96dca4f66f1cb;
158 /* For use in "MainProgram.c". */ 118 /* For use in "MainProgram.c". */
159 PyCodeObject *codeobj_main = NULL; 119 PyCodeObject *codeobj_main = NULL;
160 120
161 static void createModuleCodeObjects(void) 121 static void createModuleCodeObjects(void)
162 { 122 {
163     module_filename_obj = const_str_digest_4dcb3535bb83044631d5e7ab8c194812; 123     module_filename_obj = const_str_digest_4dcb3535bb83044631d5e7ab8c194812;
164     codeobj_15b7397a995891ef383f7a1ee1c050a7 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 124     codeobj_15b7397a995891ef383f7a1ee1c050a7 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
165     codeobj_main = codeobj_15b7397a995891ef383f7a1ee1c050a7; 125     codeobj_main = codeobj_15b7397a995891ef383f7a1ee1c050a7;
n 166     codeobj_ec2cd00e9b7fca439ee2118ee76a0733 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 126     codeobj_28d328bf741d5f52bdadfdf51ec3b1be = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
167     codeobj_89114cdb83b200bd7cd96dca4f66f1cb = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 127     codeobj_89114cdb83b200bd7cd96dca4f66f1cb = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
168 } 128 }
169 129
170 // The module function declarations. 130 // The module function declarations.
171 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  ); 131 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  );
273 #ifndef __NUITKA_NO_ASSERT__ 233 #ifndef __NUITKA_NO_ASSERT__
274     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 234     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
275 #endif 235 #endif
276 236
277     // Local variable declarations. 237     // Local variable declarations.
n 278     PyObject *exception_type = NULL; n
279     PyObject *exception_value = NULL;
280     PyTracebackObject *exception_tb = NULL;
281     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
282     PyObject *tmp_called_name_1;
283     PyObject *tmp_called_name_2;
284     PyObject *tmp_called_name_3;
285     PyObject *tmp_return_value; 238     PyObject *tmp_return_value;
n 286     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused; n
287     static struct Nuitka_FrameObject *cache_frame_ec2cd00e9b7fca439ee2118ee76a0733 = NULL;
288  
289     struct Nuitka_FrameObject *frame_ec2cd00e9b7fca439ee2118ee76a0733;
290  
291     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
292     tmp_return_value = NULL; 239     tmp_return_value = NULL;
293 240
294     // Actual function code. 241     // Actual function code.
n 295     MAKE_OR_REUSE_FRAME( cache_frame_ec2cd00e9b7fca439ee2118ee76a0733, codeobj_ec2cd00e9b7fca439ee2118ee76a0733, module___main__, 0 ); n
296     frame_ec2cd00e9b7fca439ee2118ee76a0733 = cache_frame_ec2cd00e9b7fca439ee2118ee76a0733;
297  
298     // Push the new frame as the currently active one.
299     pushFrameStack( frame_ec2cd00e9b7fca439ee2118ee76a0733 );
300  
301     // Mark the frame object as in use, ref count 1 will be up for reuse.
302     assert( Py_REFCNT( frame_ec2cd00e9b7fca439ee2118ee76a0733 ) == 2 ); // Frame stack
303  
304     // Framed code:
305     tmp_called_name_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
306  
307     if (unlikely( tmp_called_name_1 == NULL ))
308     {
309         tmp_called_name_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
310     }
311  
312     if ( tmp_called_name_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     frame_ec2cd00e9b7fca439ee2118ee76a0733->m_frame.f_lineno = 29;
328     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
329  
330     if ( tmp_unused == NULL )
331     {
332         assert( ERROR_OCCURRED() );
333  
334         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
335  
336  
337         exception_lineno = 29;
338  
339         goto frame_exception_exit_1;
340     }
341     Py_DECREF( tmp_unused );
342     tmp_called_name_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
343  
344     if (unlikely( tmp_called_name_2 == NULL ))
345     {
346         tmp_called_name_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
347     }
348  
349     if ( tmp_called_name_2 == NULL )
350     {
351  
352         exception_type = PyExc_NameError;
353         Py_INCREF( exception_type );
354         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
355         exception_tb = NULL;
356         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
357         CHAIN_EXCEPTION( exception_value );
358  
359         exception_lineno = 30;
360  
361         goto frame_exception_exit_1;
362     }
363  
364     frame_ec2cd00e9b7fca439ee2118ee76a0733->m_frame.f_lineno = 30;
365     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
366  
367     if ( tmp_unused == NULL )
368     {
369         assert( ERROR_OCCURRED() );
370  
371         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
372  
373  
374         exception_lineno = 30;
375  
376         goto frame_exception_exit_1;
377     }
378     Py_DECREF( tmp_unused );
379     tmp_called_name_3 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
380  
381     if (unlikely( tmp_called_name_3 == NULL ))
382     {
383         tmp_called_name_3 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
384     }
385  
386     if ( tmp_called_name_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     frame_ec2cd00e9b7fca439ee2118ee76a0733->m_frame.f_lineno = 31;
402     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
403  
404     if ( tmp_unused == 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_unused );
416  
417 #if 0
418     RESTORE_FRAME_EXCEPTION( frame_ec2cd00e9b7fca439ee2118ee76a0733 );
419 #endif
420  
421     // Put the previous frame back on top.
422     popFrameStack();
423  
424     goto frame_no_exception_1;
425  
426     frame_exception_exit_1:;
427  
428 #if 0
429     RESTORE_FRAME_EXCEPTION( frame_ec2cd00e9b7fca439ee2118ee76a0733 );
430 #endif
431  
432     if ( exception_tb == NULL )
433     {
434         exception_tb = MAKE_TRACEBACK( frame_ec2cd00e9b7fca439ee2118ee76a0733, exception_lineno );
435     }
436     else if ( exception_tb->tb_frame != &frame_ec2cd00e9b7fca439ee2118ee76a0733->m_frame )
437     {
438         exception_tb = ADD_TRACEBACK( exception_tb, frame_ec2cd00e9b7fca439ee2118ee76a0733, exception_lineno );
439     }
440  
441     // Attachs locals to frame if any.
442     Nuitka_Frame_AttachLocals(
443         (struct Nuitka_FrameObject *)frame_ec2cd00e9b7fca439ee2118ee76a0733,
444         type_description_1
445     );
446  
447  
448     // Release cached frame.
449     if ( frame_ec2cd00e9b7fca439ee2118ee76a0733 == cache_frame_ec2cd00e9b7fca439ee2118ee76a0733 )
450     {
451         Py_DECREF( frame_ec2cd00e9b7fca439ee2118ee76a0733 );
452     }
453     cache_frame_ec2cd00e9b7fca439ee2118ee76a0733 = NULL;
454  
455     assertFrameObject( frame_ec2cd00e9b7fca439ee2118ee76a0733 );
456  
457     // Put the previous frame back on top.
458     popFrameStack();
459  
460     // Return the error.
461     goto function_exception_exit;
462  
463     frame_no_exception_1:;
464  
465     tmp_return_value = Py_None; 242     tmp_return_value = Py_None;
466     Py_INCREF( tmp_return_value ); 243     Py_INCREF( tmp_return_value );
467     goto function_return_exit; 244     goto function_return_exit;
468 245
469     // Return statement must have exited already. 246     // Return statement must have exited already.
470     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly ); 247     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly );
471     return NULL; 248     return NULL;
472 249
n 473 function_exception_exit: n
474     assert( exception_type );
475     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
476  
477     return NULL;
478 function_return_exit: 250 function_return_exit:
479 251
480 CHECK_OBJECT( tmp_return_value ); 252 CHECK_OBJECT( tmp_return_value );
481 assert( had_error || !ERROR_OCCURRED() ); 253 assert( had_error || !ERROR_OCCURRED() );
482 return tmp_return_value; 254 return tmp_return_value;
516         impl___main__$$$function_2_calledRepeatedly, 288         impl___main__$$$function_2_calledRepeatedly,
517         const_str_plain_calledRepeatedly, 289         const_str_plain_calledRepeatedly,
518 #if PYTHON_VERSION >= 330 290 #if PYTHON_VERSION >= 330
519         NULL, 291         NULL,
520 #endif 292 #endif
t 521         codeobj_ec2cd00e9b7fca439ee2118ee76a0733, t 293         codeobj_28d328bf741d5f52bdadfdf51ec3b1be,
522         NULL, 294         NULL,
523 #if PYTHON_VERSION >= 300 295 #if PYTHON_VERSION >= 300
524         NULL, 296         NULL,
525         const_dict_empty, 297         const_dict_empty,
526 #endif 298 #endif