Construct LoopSmallXrange

Performance Diagrams

Construct LoopSmallXrange 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 2.7Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)9147564973.61538461538461257.0CPython 2.778254764196.30769230769232292.71534192373724Nuitka (historic)30707392319.0000000000001421.16140650679114Nuitka (master)30756299441.69230769230774421.029287497552Nuitka (develop)30709162564.3846153846155421.15662496945794Nuitka (factory)Construct LoopSmallXrangeTicks Construct LoopSmallXrange 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000CPython 3.5Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)14521790672.9230769230769257.0CPython 3.50194.46153846153845504.11538461538464Nuitka (historic)87030484316.0356.016764277731Nuitka (master)87026044437.53846153846143356.0243197668433Nuitka (develop)86965226559.0769230769231356.12781295081425Nuitka (factory)Construct LoopSmallXrangeTicks

Source Code with Construct

module_value1 = 5
module_value2 = 3

def calledRepeatedly():
    # Force frame and eliminate forward propagation (currently).
    module_value1

    # Make sure we have a local variable x anyway
    x = 2

    local_value = module_value1

# construct_begin
    for x in xrange(local_value, local_value+3):
        pass
# construct_end

for x in xrange(50000):
    calledRepeatedly()

print("OK.")

Source Code without Construct

module_value1 = 5
module_value2 = 3

def calledRepeatedly():
    # Force frame and eliminate forward propagation (currently).
    module_value1

    # Make sure we have a local variable x anyway
    x = 2

    local_value = module_value1

# construct_begin




for x in xrange(50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
29     x = 2 29     x = 2
30 30
31     local_value = module_value1 31     local_value = module_value1
32 32
33 # construct_begin 33 # construct_begin
t 34     for x in xrange(local_value, local_value+3): t 34  
35         pass 35  
36 # construct_end 36  
37 37
38 for x in xrange(50000): 38 for x in xrange(50000):
39     calledRepeatedly() 39     calledRepeatedly()
40 40
41 print("OK.") 41 print("OK.")

Context Diff of Generated Code


Construct
Baseline
36 extern PyObject *const_int_pos_1; 36 extern PyObject *const_int_pos_1;
37 extern PyObject *const_dict_empty; 37 extern PyObject *const_dict_empty;
38 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
39 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
40 static PyObject *const_xrange_0_50000; 40 static PyObject *const_xrange_0_50000;
n 41 static PyObject *const_str_plain_local_value; n
42 extern PyObject *const_str_plain_print; 41 extern PyObject *const_str_plain_print;
43 static PyObject *const_int_pos_3; 42 static PyObject *const_int_pos_3;
n n 43 static PyObject *const_str_plain_local_value;
44 static PyObject *const_int_pos_50000; 44 static PyObject *const_int_pos_50000;
45 static PyObject *const_str_plain_module_value2; 45 static PyObject *const_str_plain_module_value2;
46 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 46 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
47 static PyObject *const_str_plain_module_value1; 47 static PyObject *const_str_plain_module_value1;
48 static PyObject *const_str_plain_calledRepeatedly; 48 static PyObject *const_str_plain_calledRepeatedly;
49 static PyObject *const_str_angle_module; 49 static PyObject *const_str_angle_module;
50 static PyObject *const_str_plain_x; 50 static PyObject *const_str_plain_x;
51 extern PyObject *const_tuple_empty; 51 extern PyObject *const_tuple_empty;
52 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 52 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
53 static PyObject *const_int_pos_5; 53 static PyObject *const_int_pos_5;
n 54 static PyObject *const_int_pos_2; n
55 static PyObject *const_tuple_str_plain_x_str_plain_local_value_tuple; 54 static PyObject *const_tuple_str_plain_x_str_plain_local_value_tuple;
56 extern PyObject *const_str_plain___loader__; 55 extern PyObject *const_str_plain___loader__;
57 extern PyObject *const_str_plain___main__; 56 extern PyObject *const_str_plain___main__;
58 extern PyObject *const_str_plain___doc__; 57 extern PyObject *const_str_plain___doc__;
59 extern PyObject *const_str_plain___cached__; 58 extern PyObject *const_str_plain___cached__;
65 { 64 {
66     const_str_digest_ffe30818a9ea7c34df8a7bac0124aeaf = UNSTREAM_STRING( &constant_bin[ 0 ], 73, 0 ); 65     const_str_digest_ffe30818a9ea7c34df8a7bac0124aeaf = UNSTREAM_STRING( &constant_bin[ 0 ], 73, 0 );
67     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 73 ], 11, 1 ); 66     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 73 ], 11, 1 );
68     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 67     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
69     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 ); 68     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 );
n n 69     const_int_pos_3 = PyLong_FromUnsignedLong( 3ul );
70     const_str_plain_local_value = UNSTREAM_STRING( &constant_bin[ 84 ], 11, 1 ); 70     const_str_plain_local_value = UNSTREAM_STRING( &constant_bin[ 84 ], 11, 1 );
n 71     const_int_pos_3 = PyLong_FromUnsignedLong( 3ul ); n
72     const_str_plain_module_value2 = UNSTREAM_STRING( &constant_bin[ 95 ], 13, 1 ); 71     const_str_plain_module_value2 = UNSTREAM_STRING( &constant_bin[ 95 ], 13, 1 );
73     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 72     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 108 ], 3, 0 ); 73     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 108 ], 3, 0 );
75     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 74     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
76     const_str_plain_module_value1 = UNSTREAM_STRING( &constant_bin[ 111 ], 13, 1 ); 75     const_str_plain_module_value1 = UNSTREAM_STRING( &constant_bin[ 111 ], 13, 1 );
77     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 124 ], 16, 1 ); 76     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 124 ], 16, 1 );
78     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 140 ], 8, 0 ); 77     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 140 ], 8, 0 );
79     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 25 ], 1, 1 ); 78     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 25 ], 1, 1 );
80     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul ); 79     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul );
n 81     const_int_pos_2 = PyLong_FromUnsignedLong( 2ul ); n
82     const_tuple_str_plain_x_str_plain_local_value_tuple = PyTuple_New( 2 ); 80     const_tuple_str_plain_x_str_plain_local_value_tuple = PyTuple_New( 2 );
83     PyTuple_SET_ITEM( const_tuple_str_plain_x_str_plain_local_value_tuple, 0, const_str_plain_x ); Py_INCREF( const_str_plain_x ); 81     PyTuple_SET_ITEM( const_tuple_str_plain_x_str_plain_local_value_tuple, 0, const_str_plain_x ); Py_INCREF( const_str_plain_x );
84     PyTuple_SET_ITEM( const_tuple_str_plain_x_str_plain_local_value_tuple, 1, const_str_plain_local_value ); Py_INCREF( const_str_plain_local_value ); 82     PyTuple_SET_ITEM( const_tuple_str_plain_x_str_plain_local_value_tuple, 1, const_str_plain_local_value ); Py_INCREF( const_str_plain_local_value );
85 83
86     constants_created = true; 84     constants_created = true;
121 #ifndef __NUITKA_NO_ASSERT__ 119 #ifndef __NUITKA_NO_ASSERT__
122     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 120     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
123 #endif 121 #endif
124 122
125     // Local variable declarations. 123     // Local variable declarations.
n 126     PyObject *var_x = NULL; n
127     PyObject *var_local_value = NULL; 124     PyObject *var_local_value = NULL;
n 128     PyObject *tmp_for_loop_1__for_iterator = NULL; n
129     PyObject *tmp_for_loop_1__iter_value = NULL;
130     PyObject *exception_type = NULL, *exception_value = NULL; 125     PyObject *exception_type = NULL, *exception_value = NULL;
131     PyTracebackObject *exception_tb = NULL; 126     PyTracebackObject *exception_tb = NULL;
132     NUITKA_MAY_BE_UNUSED int exception_lineno = -1; 127     NUITKA_MAY_BE_UNUSED int exception_lineno = -1;
133     PyObject *exception_keeper_type_1; 128     PyObject *exception_keeper_type_1;
134     PyObject *exception_keeper_value_1; 129     PyObject *exception_keeper_value_1;
135     PyTracebackObject *exception_keeper_tb_1; 130     PyTracebackObject *exception_keeper_tb_1;
136     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 131     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 137     PyObject *exception_keeper_type_2; n
138     PyObject *exception_keeper_value_2;
139     PyTracebackObject *exception_keeper_tb_2;
140     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
141     PyObject *tmp_assign_source_1; 132     PyObject *tmp_assign_source_1;
n 142     PyObject *tmp_assign_source_2; n
143     PyObject *tmp_assign_source_3;
144     PyObject *tmp_assign_source_4;
145     PyObject *tmp_assign_source_5;
146     PyObject *tmp_iter_arg_1;
147     PyObject *tmp_left_name_1;
148     PyObject *tmp_next_source_1;
149     PyObject *tmp_return_value; 133     PyObject *tmp_return_value;
n 150     PyObject *tmp_right_name_1; n
151     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused; 134     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
n 152     PyObject *tmp_xrange_high_1; n
153     PyObject *tmp_xrange_low_1;
154     static struct Nuitka_FrameObject *cache_frame_function = NULL; 135     static struct Nuitka_FrameObject *cache_frame_function = NULL;
155 136
156     struct Nuitka_FrameObject *frame_function; 137     struct Nuitka_FrameObject *frame_function;
157 138
158     char const *type_description; 139     char const *type_description;
159     tmp_return_value = NULL; 140     tmp_return_value = NULL;
160 141
161     // Actual function code. 142     // Actual function code.
162     // Tried code: 143     // Tried code:
n 163     MAKE_OR_REUSE_FRAME( cache_frame_function, codeobj_8b4fb85a540bc230ccc932b0056645a0, module___main__, sizeof(PyObject *)+sizeof(PyObject *) ); n 144     MAKE_OR_REUSE_FRAME( cache_frame_function, codeobj_8b4fb85a540bc230ccc932b0056645a0, module___main__, sizeof(void *)+sizeof(PyObject *) );
164     frame_function = cache_frame_function; 145     frame_function = cache_frame_function;
165 146
166     // Push the new frame as the currently active one. 147     // Push the new frame as the currently active one.
167     pushFrameStack( frame_function ); 148     pushFrameStack( frame_function );
168 149
186         exception_tb = NULL; 167         exception_tb = NULL;
187         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 168         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
188         CHAIN_EXCEPTION( exception_value ); 169         CHAIN_EXCEPTION( exception_value );
189 170
190         exception_lineno = 26; 171         exception_lineno = 26;
n 191         type_description = "oo"; n 172         type_description = "No";
192         goto frame_exception_exit_1; 173         goto frame_exception_exit_1;
193     } 174     }
194 175
n 195     tmp_assign_source_1 = const_int_pos_2; n
196     assert( var_x == NULL );
197     Py_INCREF( tmp_assign_source_1 );
198     var_x = tmp_assign_source_1;
199  
200     tmp_assign_source_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_module_value1 ); 176     tmp_assign_source_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_module_value1 );
201 177
n 202     if (unlikely( tmp_assign_source_2 == NULL )) n 178     if (unlikely( tmp_assign_source_1 == NULL ))
203     { 179     {
n 204         tmp_assign_source_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_module_value1 ); n 180         tmp_assign_source_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_module_value1 );
205     } 181     }
206 182
n 207     if ( tmp_assign_source_2 == NULL ) n 183     if ( tmp_assign_source_1 == NULL )
208     { 184     {
209 185
210         exception_type = PyExc_NameError; 186         exception_type = PyExc_NameError;
211         Py_INCREF( exception_type ); 187         Py_INCREF( exception_type );
212         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "module_value1" ); 188         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "module_value1" );
213         exception_tb = NULL; 189         exception_tb = NULL;
214         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 190         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
215         CHAIN_EXCEPTION( exception_value ); 191         CHAIN_EXCEPTION( exception_value );
216 192
217         exception_lineno = 31; 193         exception_lineno = 31;
n 218         type_description = "oo"; n 194         type_description = "No";
219         goto frame_exception_exit_1; 195         goto frame_exception_exit_1;
220     } 196     }
221 197
222     assert( var_local_value == NULL ); 198     assert( var_local_value == NULL );
n 223     Py_INCREF( tmp_assign_source_2 ); n 199     Py_INCREF( tmp_assign_source_1 );
224     var_local_value = tmp_assign_source_2; 200     var_local_value = tmp_assign_source_1;
225 201
n 226     tmp_xrange_low_1 = var_local_value; n
227 202
n 228     tmp_left_name_1 = var_local_value; n 203 #if 0
204     RESTORE_FRAME_EXCEPTION( frame_function );
205 #endif
229 206
n 230     tmp_right_name_1 = const_int_pos_3; n 207     // Put the previous frame back on top.
231     tmp_xrange_high_1 = BINARY_OPERATION_ADD( tmp_left_name_1, tmp_right_name_1 ); 208     popFrameStack();
232     if ( tmp_xrange_high_1 == NULL )
233     {
234         assert( ERROR_OCCURRED() );
235 209
n 236         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb ); n 210     goto frame_no_exception_1;
237 211
n 238   n
239         exception_lineno = 34;
240         type_description = "oo";
241         goto frame_exception_exit_1; 212     frame_exception_exit_1:;
213  
214 #if 0
215     RESTORE_FRAME_EXCEPTION( frame_function );
216 #endif
217  
218     if ( exception_tb == NULL )
242     } 219     {
243     tmp_iter_arg_1 = BUILTIN_XRANGE2( tmp_xrange_low_1, tmp_xrange_high_1 ); 220         exception_tb = MAKE_TRACEBACK( frame_function, exception_lineno );
244     Py_DECREF( tmp_xrange_high_1 );
245     if ( tmp_iter_arg_1 == NULL )
246     { 221     }
247         assert( ERROR_OCCURRED() ); 222     else if ( exception_tb->tb_frame != &frame_function->m_frame )
248  
249         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
250  
251  
252         exception_lineno = 34;
253         type_description = "oo";
254         goto frame_exception_exit_1;
255     } 223     {
256     tmp_assign_source_3 = MAKE_ITERATOR( tmp_iter_arg_1 ); 224         exception_tb = ADD_TRACEBACK( exception_tb, frame_function, exception_lineno );
257     Py_DECREF( tmp_iter_arg_1 );
258     if ( tmp_assign_source_3 == NULL )
259     { 225     }
260         assert( ERROR_OCCURRED() );
261 226
n 262         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb ); n 227     Nuitka_Frame_AttachLocals( (struct Nuitka_FrameObject *)frame_function, type_description ,NULL, var_local_value );
263 228
n 264   n 229     // Release cached frame.
265         exception_lineno = 34; 230     if ( frame_function == cache_frame_function )
266         type_description = "oo";
267         goto frame_exception_exit_1;
268     } 231     {
269     assert( tmp_for_loop_1__for_iterator == NULL ); 232         Py_DECREF( frame_function );
270     tmp_for_loop_1__for_iterator = tmp_assign_source_3;
271  
272     // Tried code:
273     loop_start_1:;
274     tmp_next_source_1 = tmp_for_loop_1__for_iterator;
275  
276     tmp_assign_source_4 = ITERATOR_NEXT( tmp_next_source_1 );
277     if ( tmp_assign_source_4 == NULL )
278     { 233     }
279         if ( CHECK_AND_CLEAR_STOP_ITERATION_OCCURRED() ) 234     cache_frame_function = NULL;
280         {
281 235
n 282             goto loop_end_1; n 236     assertFrameObject( frame_function );
283         }
284         else
285         {
286 237
n 287             FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb ); n
288             type_description = "oo";
289             frame_function->m_frame.f_lineno = 34;
290             goto try_except_handler_2;
291         }
292     }
293 238
n 294     { n 239     // Put the previous frame back on top.
295         PyObject *old = tmp_for_loop_1__iter_value; 240     popFrameStack();
296         tmp_for_loop_1__iter_value = tmp_assign_source_4;
297         Py_XDECREF( old );
298     }
299 241
n 300     tmp_assign_source_5 = tmp_for_loop_1__iter_value; n 242     // Return the error.
301  
302     {
303         PyObject *old = var_x;
304         var_x = tmp_assign_source_5;
305         Py_INCREF( var_x );
306         Py_XDECREF( old );
307     }
308  
309     if ( CONSIDER_THREADING() == false )
310     {
311         assert( ERROR_OCCURRED() );
312  
313         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
314  
315  
316         exception_lineno = 34;
317         type_description = "oo";
318         goto try_except_handler_2; 243     goto try_except_handler_1;
319     } 244  
320     goto loop_start_1; 245     frame_no_exception_1:;
321     loop_end_1:; 246  
247     tmp_return_value = Py_None;
248     Py_INCREF( tmp_return_value );
322     goto try_end_1; 249     goto try_return_handler_1;
250     // tried codes exits in all cases
251     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
252     return NULL;
253     // Return handler code:
254     try_return_handler_1:;
255     CHECK_OBJECT( (PyObject *)var_local_value );
256     Py_DECREF( var_local_value );
257     var_local_value = NULL;
258  
259     goto function_return_exit;
323     // Exception handler code: 260     // Exception handler code:
n 324     try_except_handler_2:; n 261     try_except_handler_1:;
325     exception_keeper_type_1 = exception_type; 262     exception_keeper_type_1 = exception_type;
326     exception_keeper_value_1 = exception_value; 263     exception_keeper_value_1 = exception_value;
327     exception_keeper_tb_1 = exception_tb; 264     exception_keeper_tb_1 = exception_tb;
328     exception_keeper_lineno_1 = exception_lineno; 265     exception_keeper_lineno_1 = exception_lineno;
329     exception_type = NULL; 266     exception_type = NULL;
330     exception_value = NULL; 267     exception_value = NULL;
331     exception_tb = NULL; 268     exception_tb = NULL;
332     exception_lineno = -1; 269     exception_lineno = -1;
333 270
n 334     Py_XDECREF( tmp_for_loop_1__iter_value ); n
335     tmp_for_loop_1__iter_value = NULL;
336  
337     Py_XDECREF( tmp_for_loop_1__for_iterator );
338     tmp_for_loop_1__for_iterator = NULL;
339  
340     // Re-raise. 271     // Re-raise.
341     exception_type = exception_keeper_type_1; 272     exception_type = exception_keeper_type_1;
342     exception_value = exception_keeper_value_1; 273     exception_value = exception_keeper_value_1;
343     exception_tb = exception_keeper_tb_1; 274     exception_tb = exception_keeper_tb_1;
344     exception_lineno = exception_keeper_lineno_1; 275     exception_lineno = exception_keeper_lineno_1;
t 345   t
346     goto frame_exception_exit_1;
347     // End of try:
348     try_end_1:;
349  
350 #if 0
351     RESTORE_FRAME_EXCEPTION( frame_function );
352 #endif
353  
354     // Put the previous frame back on top.
355     popFrameStack();
356  
357     goto frame_no_exception_1;
358  
359     frame_exception_exit_1:;
360  
361 #if 0
362     RESTORE_FRAME_EXCEPTION( frame_function );
363 #endif
364  
365     if ( exception_tb == NULL )
366     {
367         exception_tb = MAKE_TRACEBACK( frame_function, exception_lineno );
368     }
369     else if ( exception_tb->tb_frame != &frame_function->m_frame )
370     {
371         exception_tb = ADD_TRACEBACK( exception_tb, frame_function, exception_lineno );
372     }
373  
374     Nuitka_Frame_AttachLocals( (struct Nuitka_FrameObject *)frame_function, type_description ,var_x, var_local_value );
375  
376     // Release cached frame.
377     if ( frame_function == cache_frame_function )
378     {
379         Py_DECREF( frame_function );
380     }
381     cache_frame_function = NULL;
382  
383     assertFrameObject( frame_function );
384  
385  
386     // Put the previous frame back on top.
387     popFrameStack();
388  
389     // Return the error.
390     goto try_except_handler_1;
391  
392     frame_no_exception_1:;
393  
394     Py_XDECREF( tmp_for_loop_1__iter_value );
395     tmp_for_loop_1__iter_value = NULL;
396  
397     Py_XDECREF( tmp_for_loop_1__for_iterator );
398     tmp_for_loop_1__for_iterator = NULL;
399  
400     tmp_return_value = Py_None;
401     Py_INCREF( tmp_return_value );
402     goto try_return_handler_1;
403     // tried codes exits in all cases
404     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
405     return NULL;
406     // Return handler code:
407     try_return_handler_1:;
408     Py_XDECREF( var_x );
409     var_x = NULL;
410  
411     Py_XDECREF( var_local_value );
412     var_local_value = NULL;
413  
414     goto function_return_exit;
415     // Exception handler code:
416     try_except_handler_1:;
417     exception_keeper_type_2 = exception_type;
418     exception_keeper_value_2 = exception_value;
419     exception_keeper_tb_2 = exception_tb;
420     exception_keeper_lineno_2 = exception_lineno;
421     exception_type = NULL;
422     exception_value = NULL;
423     exception_tb = NULL;
424     exception_lineno = -1;
425  
426     Py_XDECREF( var_x );
427     var_x = NULL;
428  
429     Py_XDECREF( var_local_value );
430     var_local_value = NULL;
431  
432     // Re-raise.
433     exception_type = exception_keeper_type_2;
434     exception_value = exception_keeper_value_2;
435     exception_tb = exception_keeper_tb_2;
436     exception_lineno = exception_keeper_lineno_2;
437 276
438     goto function_exception_exit; 277     goto function_exception_exit;
439     // End of try: 278     // End of try:
440 279
441     // Return statement must have exited already. 280     // Return statement must have exited already.