Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000150000000150000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)15724402788.11538461538461257.0CPython 2.7102493570240.03846153846155343.0425702492539Nuitka (master)102244113391.96153846153845343.434602071868Nuitka (develop)102244095543.8846153846154343.4346303596002Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)14526476788.11538461538461257.00000000000006CPython 3.599507854240.03846153846155334.83881383162714Nuitka (master)99310833391.96153846153845335.173973700037Nuitka (develop)99310860543.8846153846154335.1739277693167Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks

Source Code with Construct

from __future__ import print_function

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    python_func("some", "random", "values", "to", "check", "call")
    python_func("some", "other", "values", "to", "check", "call")
    python_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

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

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
26 26
27 def calledRepeatedly(): 27 def calledRepeatedly():
28     # This is supposed to make a call to a non-compiled function, which is 28     # This is supposed to make a call to a non-compiled function, which is
29     # being optimized separately. 29     # being optimized separately.
30 # construct_begin 30 # construct_begin
n 31     python_func("some", "random", "values", "to", "check", "call") n
32     python_func("some", "other", "values", "to", "check", "call")
33     python_func("some", "new", "values", "to", "check", "call")
34 # construct_alternative
35 31
36 32
t t 33  
34 # construct_alternative
35     pass
36 # construct_end
37 37
38 import itertools 38 import itertools
39 for x in itertools.repeat(None, 50000): 39 for x in itertools.repeat(None, 50000):
40     calledRepeatedly() 40     calledRepeatedly()
41 41

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_itertools; 34 static PyObject *const_str_plain_itertools;
36 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d; 35 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d;
n 37 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
38 static PyObject *const_str_plain_values;
39 extern PyObject *const_str_plain___file__; 36 extern PyObject *const_str_plain___file__;
n 40 static PyObject *const_str_plain_other; n
41 extern PyObject *const_int_0; 37 extern PyObject *const_int_0;
n 42 static PyObject *const_str_plain_check; n
43 static PyObject *const_str_digest_63d11340b7ffebaa80de074015099008; 38 static PyObject *const_str_digest_63d11340b7ffebaa80de074015099008;
44 extern PyObject *const_str_plain_print; 39 extern PyObject *const_str_plain_print;
n 45 static PyObject *const_str_plain_call; n
46 static PyObject *const_int_pos_50000; 40 static PyObject *const_int_pos_50000;
47 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 41 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 48 static PyObject *const_str_plain_random; n
49 static PyObject *const_str_plain_print_function; 42 static PyObject *const_str_plain_print_function;
50 static PyObject *const_str_plain_calledRepeatedly; 43 static PyObject *const_str_plain_calledRepeatedly;
51 static PyObject *const_str_angle_module; 44 static PyObject *const_str_angle_module;
52 static PyObject *const_str_plain_None; 45 static PyObject *const_str_plain_None;
53 static PyObject *const_str_plain_x; 46 static PyObject *const_str_plain_x;
54 extern PyObject *const_tuple_empty; 47 extern PyObject *const_tuple_empty;
55 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 48 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 56 static PyObject *const_str_plain_python_func; n
57 static PyObject *const_str_plain_some;
58 static PyObject *const_str_plain_repeat; 49 static PyObject *const_str_plain_repeat;
n 59 static PyObject *const_str_plain_new; n
60 static PyObject *const_tuple_none_int_pos_50000_tuple; 50 static PyObject *const_tuple_none_int_pos_50000_tuple;
n 61 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
62 static PyObject *const_str_angle_string; 51 static PyObject *const_str_angle_string;
n 63 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple; n
64 extern PyObject *const_str_plain___doc__; 52 extern PyObject *const_str_plain___doc__;
65 extern PyObject *const_str_plain___cached__; 53 extern PyObject *const_str_plain___cached__;
66 static PyObject *const_str_plain_exec; 54 static PyObject *const_str_plain_exec;
67 static PyObject *module_filename_obj; 55 static PyObject *module_filename_obj;
68 56
70 static bool constants_created = false; 58 static bool constants_created = false;
71 59
72 /* Function to create module private constants. */ 60 /* Function to create module private constants. */
73 static void createModuleConstants( void ) 61 static void createModuleConstants( void )
74 { 62 {
n 75     const_str_plain_to = UNSTREAM_STRING_ASCII( &constant_bin[ 71 ], 2, 1 ); n
76     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 73 ], 9, 1 ); 63     const_str_plain_itertools = UNSTREAM_STRING_ASCII( &constant_bin[ 38 ], 9, 1 );
77     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII( &constant_bin[ 82 ], 40, 0 ); 64     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING_ASCII( &constant_bin[ 47 ], 40, 0 );
78     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 );
79     const_str_plain_some = UNSTREAM_STRING_ASCII( &constant_bin[ 122 ], 4, 1 );
80     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
81     const_str_plain_new = UNSTREAM_STRING_ASCII( &constant_bin[ 126 ], 3, 1 );
82     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF(const_str_plain_new);
83     const_str_plain_values = UNSTREAM_STRING_ASCII( &constant_bin[ 129 ], 6, 1 );
84     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
85     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
86     const_str_plain_check = UNSTREAM_STRING_ASCII( &constant_bin[ 135 ], 5, 1 );
87     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
88     const_str_plain_call = UNSTREAM_STRING_ASCII( &constant_bin[ 39 ], 4, 1 );
89     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
90     const_str_plain_other = UNSTREAM_STRING_ASCII( &constant_bin[ 140 ], 5, 1 );
91     const_str_digest_63d11340b7ffebaa80de074015099008 = UNSTREAM_STRING_ASCII( &constant_bin[ 145 ], 54, 0 ); 65     const_str_digest_63d11340b7ffebaa80de074015099008 = UNSTREAM_STRING_ASCII( &constant_bin[ 87 ], 54, 0 );
92     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 66     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
93     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 67     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 94     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 199 ], 3, 0 ); n 68     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 141 ], 3, 0 );
95     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352); 69     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF(const_str_digest_5ed1392909ad16e6227b8230f4582352);
n 96     const_str_plain_random = UNSTREAM_STRING_ASCII( &constant_bin[ 202 ], 6, 1 ); n
97     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 208 ], 14, 1 ); 70     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 144 ], 14, 1 );
98     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 39 ], 16, 1 ); 71     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 16, 1 );
99     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 222 ], 8, 0 ); 72     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 158 ], 8, 0 );
100     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 230 ], 4, 1 ); 73     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 166 ], 4, 1 );
101     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 161 ], 1, 1 ); 74     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 103 ], 1, 1 );
102     const_str_plain_python_func = UNSTREAM_STRING_ASCII( &constant_bin[ 6 ], 11, 1 );
103     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 234 ], 6, 1 ); 75     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 170 ], 6, 1 );
104     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 76     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
105     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF(Py_None); 77     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF(Py_None);
106     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF(const_int_pos_50000); 78     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF(const_int_pos_50000);
n 107     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 ); n
108     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
109     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF(const_str_plain_random);
110     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
111     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
112     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
113     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
114     const_str_angle_string = UNSTREAM_STRING_ASCII( &constant_bin[ 240 ], 8, 0 ); 79     const_str_angle_string = UNSTREAM_STRING_ASCII( &constant_bin[ 176 ], 8, 0 );
115     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
116     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF(const_str_plain_some);
117     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF(const_str_plain_other);
118     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF(const_str_plain_values);
119     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF(const_str_plain_to);
120     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF(const_str_plain_check);
121     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF(const_str_plain_call);
122     const_str_plain_exec = UNSTREAM_STRING_ASCII( &constant_bin[ 248 ], 4, 1 ); 80     const_str_plain_exec = UNSTREAM_STRING_ASCII( &constant_bin[ 184 ], 4, 1 );
123 81
124     constants_created = true; 82     constants_created = true;
125 } 83 }
126 84
127 /* Function to verify module private constants for non-corruption. */ 85 /* Function to verify module private constants for non-corruption. */
135 } 93 }
136 #endif 94 #endif
137 95
138 // The module code objects. 96 // The module code objects.
139 static PyCodeObject *codeobj_71985b1dd6695f0606fbc8ffa72afb49; 97 static PyCodeObject *codeobj_71985b1dd6695f0606fbc8ffa72afb49;
n 140 static PyCodeObject *codeobj_7b05b345db769737373066a6b05da5af; n 98 static PyCodeObject *codeobj_d203a3708307d2826e0b2ec3cc09f913;
141 /* For use in "MainProgram.c". */ 99 /* For use in "MainProgram.c". */
142 PyCodeObject *codeobj_main = NULL; 100 PyCodeObject *codeobj_main = NULL;
143 101
144 static void createModuleCodeObjects(void) 102 static void createModuleCodeObjects(void)
145 { 103 {
146     module_filename_obj = const_str_digest_63d11340b7ffebaa80de074015099008; 104     module_filename_obj = const_str_digest_63d11340b7ffebaa80de074015099008;
147     codeobj_71985b1dd6695f0606fbc8ffa72afb49 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 105     codeobj_71985b1dd6695f0606fbc8ffa72afb49 = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
n 148     codeobj_7b05b345db769737373066a6b05da5af = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 106     codeobj_d203a3708307d2826e0b2ec3cc09f913 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_NOFREE );
149 } 107 }
150 108
151 // The module function declarations. 109 // The module function declarations.
152 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ); 110 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  );
153 111
154 112
155 // The module function definitions. 113 // The module function definitions.
n 156 static PyObject *impl___main__$$$function_1_calledRepeatedly( struct Nuitka_FunctionObject const *self, PyObject **python_pars ) n
157 {
158     // Preserve error status for checks
159 #ifndef __NUITKA_NO_ASSERT__
160     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
161 #endif
162  
163     // Local variable declarations.
164     struct Nuitka_FrameObject *frame_7b05b345db769737373066a6b05da5af;
165     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
166     PyObject *exception_type = NULL;
167     PyObject *exception_value = NULL;
168     PyTracebackObject *exception_tb = NULL;
169     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
170     static struct Nuitka_FrameObject *cache_frame_7b05b345db769737373066a6b05da5af = NULL;
171     PyObject *tmp_return_value = NULL;
172  
173     // Actual function body.
174     MAKE_OR_REUSE_FRAME(cache_frame_7b05b345db769737373066a6b05da5af, codeobj_7b05b345db769737373066a6b05da5af, module___main__, 0);
175     frame_7b05b345db769737373066a6b05da5af = cache_frame_7b05b345db769737373066a6b05da5af;
176  
177     // Push the new frame as the currently active one.
178     pushFrameStack(frame_7b05b345db769737373066a6b05da5af);
179  
180     // Mark the frame object as in use, ref count 1 will be up for reuse.
181     assert(Py_REFCNT(frame_7b05b345db769737373066a6b05da5af) == 2); // Frame stack
182  
183     // Framed code:
184     {
185         PyObject *tmp_called_name_1;
186         PyObject *tmp_mvar_value_1;
187         PyObject *tmp_call_result_1;
188         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
189  
190         if (unlikely( tmp_mvar_value_1 == NULL )) {
191             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
192         }
193  
194         if ( tmp_mvar_value_1 == NULL )
195         {
196  
197             exception_type = PyExc_NameError;
198             Py_INCREF(exception_type);
199             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 33, 0 );
200             exception_tb = NULL;
201             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
202             CHAIN_EXCEPTION( exception_value );
203  
204             exception_lineno = 31;
205  
206             goto frame_exception_exit_1;
207         }
208  
209         tmp_called_name_1 = tmp_mvar_value_1;
210         frame_7b05b345db769737373066a6b05da5af->m_frame.f_lineno = 31;
211         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
212  
213         if ( tmp_call_result_1 == NULL )
214         {
215             assert(ERROR_OCCURRED());
216  
217             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
218  
219  
220             exception_lineno = 31;
221  
222             goto frame_exception_exit_1;
223         }
224         Py_DECREF(tmp_call_result_1);
225     }
226     {
227         PyObject *tmp_called_name_2;
228         PyObject *tmp_mvar_value_2;
229         PyObject *tmp_call_result_2;
230         tmp_mvar_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
231  
232         if (unlikely( tmp_mvar_value_2 == NULL )) {
233             tmp_mvar_value_2 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
234         }
235  
236         if ( tmp_mvar_value_2 == NULL )
237         {
238  
239             exception_type = PyExc_NameError;
240             Py_INCREF(exception_type);
241             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 33, 0 );
242             exception_tb = NULL;
243             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
244             CHAIN_EXCEPTION( exception_value );
245  
246             exception_lineno = 32;
247  
248             goto frame_exception_exit_1;
249         }
250  
251         tmp_called_name_2 = tmp_mvar_value_2;
252         frame_7b05b345db769737373066a6b05da5af->m_frame.f_lineno = 32;
253         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
254  
255         if ( tmp_call_result_2 == NULL )
256         {
257             assert(ERROR_OCCURRED());
258  
259             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
260  
261  
262             exception_lineno = 32;
263  
264             goto frame_exception_exit_1;
265         }
266         Py_DECREF(tmp_call_result_2);
267     }
268     {
269         PyObject *tmp_called_name_3;
270         PyObject *tmp_mvar_value_3;
271         PyObject *tmp_call_result_3;
272         tmp_mvar_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func);
273  
274         if (unlikely( tmp_mvar_value_3 == NULL )) {
275             tmp_mvar_value_3 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func);
276         }
277  
278         if ( tmp_mvar_value_3 == NULL )
279         {
280  
281             exception_type = PyExc_NameError;
282             Py_INCREF(exception_type);
283             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 33, 0 );
284             exception_tb = NULL;
285             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
286             CHAIN_EXCEPTION( exception_value );
287  
288             exception_lineno = 33;
289  
290             goto frame_exception_exit_1;
291         }
292  
293         tmp_called_name_3 = tmp_mvar_value_3;
294         frame_7b05b345db769737373066a6b05da5af->m_frame.f_lineno = 33;
295         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
296  
297         if ( tmp_call_result_3 == NULL )
298         {
299             assert(ERROR_OCCURRED());
300  
301             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
302  
303  
304             exception_lineno = 33;
305  
306             goto frame_exception_exit_1;
307         }
308         Py_DECREF(tmp_call_result_3);
309     }
310  
311 #if 0
312     RESTORE_FRAME_EXCEPTION(frame_7b05b345db769737373066a6b05da5af);
313 #endif
314  
315     // Put the previous frame back on top.
316     popFrameStack();
317  
318     goto frame_no_exception_1;
319  
320     frame_exception_exit_1:;
321  
322 #if 0
323     RESTORE_FRAME_EXCEPTION(frame_7b05b345db769737373066a6b05da5af);
324 #endif
325  
326     if (exception_tb == NULL) {
327         exception_tb = MAKE_TRACEBACK( frame_7b05b345db769737373066a6b05da5af, exception_lineno );
328     }
329     else if (exception_tb->tb_frame != &frame_7b05b345db769737373066a6b05da5af->m_frame) {
330         exception_tb = ADD_TRACEBACK(exception_tb, frame_7b05b345db769737373066a6b05da5af, exception_lineno);
331     }
332  
333     // Attachs locals to frame if any.
334     Nuitka_Frame_AttachLocals(
335         (struct Nuitka_FrameObject *)frame_7b05b345db769737373066a6b05da5af,
336         type_description_1
337     );
338  
339  
340     // Release cached frame.
341     if (frame_7b05b345db769737373066a6b05da5af == cache_frame_7b05b345db769737373066a6b05da5af) {
342         Py_DECREF(frame_7b05b345db769737373066a6b05da5af);
343     }
344     cache_frame_7b05b345db769737373066a6b05da5af = NULL;
345  
346     assertFrameObject(frame_7b05b345db769737373066a6b05da5af);
347  
348     // Put the previous frame back on top.
349     popFrameStack();
350  
351     // Return the error.
352     goto function_exception_exit;
353  
354     frame_no_exception_1:;
355     tmp_return_value = Py_None;
356     Py_INCREF(tmp_return_value);
357     goto function_return_exit;
358  
359     // Return statement must have exited already.
360     NUITKA_CANNOT_GET_HERE(__main__$$$function_1_calledRepeatedly);
361     return NULL;
362  
363 function_exception_exit:
364     assert(exception_type);
365     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
366  
367     return NULL;
368  
369 function_return_exit:
370    // Function cleanup code if any.
371  
372  
373    // Actual function exit with return value, making sure we did not make
374    // the error status worse despite non-NULL return.
375    CHECK_OBJECT(tmp_return_value);
376    assert(had_error || !ERROR_OCCURRED());
377    return tmp_return_value;
378 }
379  
380  
381 114
382 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ) 115 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  )
383 { 116 {
384     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 117     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 385         impl___main__$$$function_1_calledRepeatedly, n 118         NULL,
386         const_str_plain_calledRepeatedly, 119         const_str_plain_calledRepeatedly,
387 #if PYTHON_VERSION >= 300 120 #if PYTHON_VERSION >= 300
388         NULL, 121         NULL,
389 #endif 122 #endif
n 390         codeobj_7b05b345db769737373066a6b05da5af, n 123         codeobj_d203a3708307d2826e0b2ec3cc09f913,
391         NULL, 124         NULL,
392 #if PYTHON_VERSION >= 300 125 #if PYTHON_VERSION >= 300
393         NULL, 126         NULL,
394         NULL, 127         NULL,
395 #endif 128 #endif
956         if ( tmp_mvar_value_2 == NULL ) 689         if ( tmp_mvar_value_2 == NULL )
957         { 690         {
958 691
959             exception_type = PyExc_NameError; 692             exception_type = PyExc_NameError;
960             Py_INCREF(exception_type); 693             Py_INCREF(exception_type);
t 961             exception_value = UNSTREAM_STRING( &constant_bin[ 33 ], 38, 0 ); t 694             exception_value = UNSTREAM_STRING( &constant_bin[ 0 ], 38, 0 );
962             exception_tb = NULL; 695             exception_tb = NULL;
963             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 696             NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
964             CHAIN_EXCEPTION( exception_value ); 697             CHAIN_EXCEPTION( exception_value );
965 698
966             exception_lineno = 40; 699             exception_lineno = 40;