Construct LoopSmallRange

Performance Diagrams

Construct LoopSmallRange 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)12613307488.11538461538461257.0CPython 2.787881812240.03846153846155331.9404975348008Nuitka (master)87888358391.96153846153845331.9276728469026Nuitka (develop)87889024543.8846153846154331.9263680436426Nuitka (factory)Construct LoopSmallRangeTicks Construct LoopSmallRange 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)13895790988.11538461538461257.0CPython 3.596096279240.03846153846155333.22285236526056Nuitka (master)96097311391.96153846153845333.2210171111267Nuitka (develop)96097133543.8846153846154333.22133365689785Nuitka (factory)Construct LoopSmallRangeTicks

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 range(local_value, local_value+3):
        pass
# construct_end

import itertools
for x in itertools.repeat(None, 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




import itertools
for x in itertools.repeat(None, 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 range(local_value, local_value+3): t 34  
35         pass 35  
36 # construct_end 36  
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
47 static PyObject *const_str_plain_x; 47 static PyObject *const_str_plain_x;
48 extern PyObject *const_tuple_empty; 48 extern PyObject *const_tuple_empty;
49 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 49 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
50 static PyObject *const_int_pos_5; 50 static PyObject *const_int_pos_5;
51 static PyObject *const_str_plain_repeat; 51 static PyObject *const_str_plain_repeat;
n 52 static PyObject *const_int_pos_2; n
53 static PyObject *const_tuple_none_int_pos_50000_tuple; 52 static PyObject *const_tuple_none_int_pos_50000_tuple;
54 static PyObject *const_tuple_str_plain_x_str_plain_local_value_tuple; 53 static PyObject *const_tuple_str_plain_x_str_plain_local_value_tuple;
55 extern PyObject *const_str_plain___main__; 54 extern PyObject *const_str_plain___main__;
56 static PyObject *const_str_digest_f4dcaae99a80fb5d0cb2959df1a4f326; 55 static PyObject *const_str_digest_f4dcaae99a80fb5d0cb2959df1a4f326;
57 extern PyObject *const_str_plain___doc__; 56 extern PyObject *const_str_plain___doc__;
75     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 65 ], 8, 0 ); 74     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 65 ], 8, 0 );
76     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 73 ], 4, 1 ); 75     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 73 ], 4, 1 );
77     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 77 ], 1, 1 ); 76     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 77 ], 1, 1 );
78     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul ); 77     const_int_pos_5 = PyLong_FromUnsignedLong( 5ul );
79     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 78 ], 6, 1 ); 78     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 78 ], 6, 1 );
n 80     const_int_pos_2 = PyLong_FromUnsignedLong( 2ul ); n
81     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 79     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
82     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 80     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
83     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 81     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
84     const_tuple_str_plain_x_str_plain_local_value_tuple = PyTuple_New( 2 ); 82     const_tuple_str_plain_x_str_plain_local_value_tuple = PyTuple_New( 2 );
85     PyTuple_SET_ITEM( const_tuple_str_plain_x_str_plain_local_value_tuple, 0, const_str_plain_x ); Py_INCREF( const_str_plain_x ); 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 );
124 #ifndef __NUITKA_NO_ASSERT__ 122 #ifndef __NUITKA_NO_ASSERT__
125     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 123     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
126 #endif 124 #endif
127 125
128     // Local variable declarations. 126     // Local variable declarations.
n 129     PyObject *var_x = NULL; n
130     PyObject *var_local_value = NULL; 127     PyObject *var_local_value = NULL;
n 131     PyObject *tmp_for_loop_1__for_iterator = NULL; n
132     PyObject *tmp_for_loop_1__iter_value = NULL;
133     struct Nuitka_FrameObject *frame_bb18f2b402b9724bc34924d365993bb5; 128     struct Nuitka_FrameObject *frame_bb18f2b402b9724bc34924d365993bb5;
134     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 129     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
135     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused; 130     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
136     PyObject *exception_type = NULL; 131     PyObject *exception_type = NULL;
137     PyObject *exception_value = NULL; 132     PyObject *exception_value = NULL;
138     PyTracebackObject *exception_tb = NULL; 133     PyTracebackObject *exception_tb = NULL;
139     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 134     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n n 135     static struct Nuitka_FrameObject *cache_frame_bb18f2b402b9724bc34924d365993bb5 = NULL;
136     PyObject *tmp_return_value = NULL;
140     PyObject *exception_keeper_type_1; 137     PyObject *exception_keeper_type_1;
141     PyObject *exception_keeper_value_1; 138     PyObject *exception_keeper_value_1;
142     PyTracebackObject *exception_keeper_tb_1; 139     PyTracebackObject *exception_keeper_tb_1;
143     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 140     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 144     PyObject *exception_keeper_type_2; n
145     PyObject *exception_keeper_value_2;
146     PyTracebackObject *exception_keeper_tb_2;
147     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
148     static struct Nuitka_FrameObject *cache_frame_bb18f2b402b9724bc34924d365993bb5 = NULL;
149     PyObject *tmp_return_value = NULL;
150     PyObject *exception_keeper_type_3;
151     PyObject *exception_keeper_value_3;
152     PyTracebackObject *exception_keeper_tb_3;
153     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_3;
154 141
155     // Actual function code. 142     // Actual function code.
156     { 143     {
157     // Tried code: 144     // Tried code:
158     MAKE_OR_REUSE_FRAME( cache_frame_bb18f2b402b9724bc34924d365993bb5, codeobj_bb18f2b402b9724bc34924d365993bb5, module___main__, sizeof(void *)+sizeof(void *) ); 145     MAKE_OR_REUSE_FRAME( cache_frame_bb18f2b402b9724bc34924d365993bb5, codeobj_bb18f2b402b9724bc34924d365993bb5, module___main__, sizeof(void *)+sizeof(void *) );
182         exception_tb = NULL; 169         exception_tb = NULL;
183         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 170         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
184         CHAIN_EXCEPTION( exception_value ); 171         CHAIN_EXCEPTION( exception_value );
185 172
186         exception_lineno = 26; 173         exception_lineno = 26;
n 187         type_description_1 = "oo"; n 174         type_description_1 = "No";
188         goto frame_exception_exit_1; 175         goto frame_exception_exit_1;
189     } 176     }
190 177
191     } 178     }
192     { 179     {
193     PyObject *tmp_assign_source_1; 180     PyObject *tmp_assign_source_1;
n 194     tmp_assign_source_1 = const_int_pos_2; n
195     assert( var_x == NULL );
196     Py_INCREF( tmp_assign_source_1 );
197     var_x = tmp_assign_source_1;
198  
199     }
200     {
201     PyObject *tmp_assign_source_2;
202     tmp_assign_source_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_module_value1 ); 181     tmp_assign_source_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_module_value1 );
203 182
n 204     if (unlikely( tmp_assign_source_2 == NULL )) n 183     if (unlikely( tmp_assign_source_1 == NULL ))
205     { 184     {
n 206         tmp_assign_source_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_module_value1 ); n 185         tmp_assign_source_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_module_value1 );
207     } 186     }
208 187
n 209     if ( tmp_assign_source_2 == NULL ) n 188     if ( tmp_assign_source_1 == NULL )
210     { 189     {
211 190
212         exception_type = PyExc_NameError; 191         exception_type = PyExc_NameError;
213         Py_INCREF( exception_type ); 192         Py_INCREF( exception_type );
214         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "module_value1" ); 193         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "module_value1" );
215         exception_tb = NULL; 194         exception_tb = NULL;
216         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb ); 195         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
217         CHAIN_EXCEPTION( exception_value ); 196         CHAIN_EXCEPTION( exception_value );
218 197
219         exception_lineno = 31; 198         exception_lineno = 31;
n 220         type_description_1 = "oo"; n 199         type_description_1 = "No";
221         goto frame_exception_exit_1; 200         goto frame_exception_exit_1;
222     } 201     }
223 202
224     assert( var_local_value == NULL ); 203     assert( var_local_value == NULL );
n 225     Py_INCREF( tmp_assign_source_2 ); n 204     Py_INCREF( tmp_assign_source_1 );
226     var_local_value = tmp_assign_source_2; 205     var_local_value = tmp_assign_source_1;
227 206
n 228     } n
229     { 207     }
230     PyObject *tmp_assign_source_3;
231     PyObject *tmp_iter_arg_1;
232     PyObject *tmp_xrange_low_1;
233     PyObject *tmp_xrange_high_1;
234     PyObject *tmp_left_name_1;
235     PyObject *tmp_right_name_1;
236     tmp_xrange_low_1 = var_local_value;
237 208
n 238     CHECK_OBJECT( tmp_xrange_low_1 ); n 209 #if 0
239     tmp_left_name_1 = var_local_value; 210     RESTORE_FRAME_EXCEPTION( frame_bb18f2b402b9724bc34924d365993bb5 );
211 #endif
240 212
n 241     CHECK_OBJECT( tmp_left_name_1 ); n 213     // Put the previous frame back on top.
242     tmp_right_name_1 = const_int_pos_3; 214     popFrameStack();
243     tmp_xrange_high_1 = BINARY_OPERATION_ADD( tmp_left_name_1, tmp_right_name_1 ); 215  
244     if ( tmp_xrange_high_1 == NULL ) 216     goto frame_no_exception_1;
217  
218     frame_exception_exit_1:;
219  
220 #if 0
221     RESTORE_FRAME_EXCEPTION( frame_bb18f2b402b9724bc34924d365993bb5 );
222 #endif
223  
224     if ( exception_tb == NULL )
225     {
226         exception_tb = MAKE_TRACEBACK( frame_bb18f2b402b9724bc34924d365993bb5, exception_lineno );
245     { 227     }
246         assert( ERROR_OCCURRED() ); 228     else if ( exception_tb->tb_frame != &frame_bb18f2b402b9724bc34924d365993bb5->m_frame )
229     {
230         exception_tb = ADD_TRACEBACK( exception_tb, frame_bb18f2b402b9724bc34924d365993bb5, exception_lineno );
231     }
247 232
n 248         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb ); n 233     // Attachs locals to frame if any.
249   234     Nuitka_Frame_AttachLocals(
250   235         (struct Nuitka_FrameObject *)frame_bb18f2b402b9724bc34924d365993bb5,
251         exception_lineno = 34;
252         type_description_1 = "oo"; 236         type_description_1,
253         goto frame_exception_exit_1; 237         NULL,
238         var_local_value
239     );
240  
241  
242     // Release cached frame.
243     if ( frame_bb18f2b402b9724bc34924d365993bb5 == cache_frame_bb18f2b402b9724bc34924d365993bb5 )
254     } 244     {
255     tmp_iter_arg_1 = BUILTIN_XRANGE2( tmp_xrange_low_1, tmp_xrange_high_1 ); 245         Py_DECREF( frame_bb18f2b402b9724bc34924d365993bb5 );
256     Py_DECREF( tmp_xrange_high_1 );
257     if ( tmp_iter_arg_1 == NULL )
258     { 246     }
259         assert( ERROR_OCCURRED() ); 247     cache_frame_bb18f2b402b9724bc34924d365993bb5 = NULL;
260 248
n 261         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb ); n 249     assertFrameObject( frame_bb18f2b402b9724bc34924d365993bb5 );
262 250
n n 251     // Put the previous frame back on top.
252     popFrameStack();
263 253
n 264         exception_lineno = 34; n 254     // Return the error.
265         type_description_1 = "oo";
266         goto frame_exception_exit_1;
267     }
268     tmp_assign_source_3 = MAKE_ITERATOR( tmp_iter_arg_1 );
269     Py_DECREF( tmp_iter_arg_1 );
270     if ( tmp_assign_source_3 == NULL )
271     {
272         assert( ERROR_OCCURRED() );
273  
274         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
275  
276  
277         exception_lineno = 34;
278         type_description_1 = "oo";
279         goto frame_exception_exit_1;
280     }
281     assert( tmp_for_loop_1__for_iterator == NULL );
282     tmp_for_loop_1__for_iterator = tmp_assign_source_3;
283  
284     }
285     {
286     // Tried code:
287     {
288     loop_start_1:;
289     {
290     // Tried code:
291     {
292     PyObject *tmp_assign_source_4;
293     PyObject *tmp_value_name_1;
294     tmp_value_name_1 = tmp_for_loop_1__for_iterator;
295  
296     CHECK_OBJECT( tmp_value_name_1 );
297     tmp_assign_source_4 = ITERATOR_NEXT( tmp_value_name_1 );
298     if ( tmp_assign_source_4 == NULL )
299     {
300         if ( !ERROR_OCCURRED() )
301         {
302             exception_type = PyExc_StopIteration;
303             Py_INCREF( exception_type );
304             exception_value = NULL;
305             exception_tb = NULL;
306         }
307         else
308         {
309             FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
310         }
311  
312  
313         type_description_1 = "oo";
314         exception_lineno = 34;
315         goto try_except_handler_3; 255     goto try_except_handler_1;
256  
257     frame_no_exception_1:;
258  
316     } 259     {
260     tmp_return_value = Py_None;
261     Py_INCREF( tmp_return_value );
262     goto try_return_handler_1;
317     { 263     }
318         PyObject *old = tmp_for_loop_1__iter_value; 264     // tried codes exits in all cases
319         tmp_for_loop_1__iter_value = tmp_assign_source_4; 265     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
320         Py_XDECREF( old ); 266     return NULL;
267     // Return handler code:
268     try_return_handler_1:;
321     } 269     {
270     CHECK_OBJECT( (PyObject *)var_local_value );
271     Py_DECREF( var_local_value );
272     var_local_value = NULL;
322 273
n n 274     }
323     } 275     {
324     goto try_end_1; 276     goto function_return_exit;
277     }
325     // Exception handler code: 278     // Exception handler code:
n 326     try_except_handler_3:; n 279     try_except_handler_1:;
327     exception_keeper_type_1 = exception_type; 280     exception_keeper_type_1 = exception_type;
328     exception_keeper_value_1 = exception_value; 281     exception_keeper_value_1 = exception_value;
329     exception_keeper_tb_1 = exception_tb; 282     exception_keeper_tb_1 = exception_tb;
330     exception_keeper_lineno_1 = exception_lineno; 283     exception_keeper_lineno_1 = exception_lineno;
331     exception_type = NULL; 284     exception_type = NULL;
332     exception_value = NULL; 285     exception_value = NULL;
333     exception_tb = NULL; 286     exception_tb = NULL;
334     exception_lineno = 0; 287     exception_lineno = 0;
335 288
336     { 289     {
n 337     PyObject *tmp_compare_left_1; n
338     PyObject *tmp_compare_right_1;
339     int tmp_exc_match_exception_match_1;
340     tmp_compare_left_1 = exception_keeper_type_1;
341     tmp_compare_right_1 = PyExc_StopIteration;
342     tmp_exc_match_exception_match_1 = EXCEPTION_MATCH_BOOL( tmp_compare_left_1, tmp_compare_right_1 );
343     if ( tmp_exc_match_exception_match_1 == -1 )
344     {
345         assert( ERROR_OCCURRED() );
346  
347         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
348  
349         Py_DECREF( exception_keeper_type_1 );
350         Py_XDECREF( exception_keeper_value_1 );
351         Py_XDECREF( exception_keeper_tb_1 );
352  
353         exception_lineno = 34;
354         type_description_1 = "oo";
355         goto try_except_handler_2;
356     }
357     if ( tmp_exc_match_exception_match_1 == 1 )
358     {
359         goto branch_yes_1;
360     }
361     else
362     {
363         goto branch_no_1;
364     }
365     branch_yes_1:;
366     {
367     Py_DECREF( exception_keeper_type_1 );
368     Py_XDECREF( exception_keeper_value_1 );
369     Py_XDECREF( exception_keeper_tb_1 );
370     goto loop_end_1;
371     }
372     goto branch_end_1;
373     branch_no_1:;
374     {
375     // Re-raise. 290     // Re-raise.
376     exception_type = exception_keeper_type_1; 291     exception_type = exception_keeper_type_1;
377     exception_value = exception_keeper_value_1; 292     exception_value = exception_keeper_value_1;
378     exception_tb = exception_keeper_tb_1; 293     exception_tb = exception_keeper_tb_1;
379     exception_lineno = exception_keeper_lineno_1; 294     exception_lineno = exception_keeper_lineno_1;
t 380   t
381     goto try_except_handler_2;
382     }
383     branch_end_1:;
384     }
385     // End of try:
386     try_end_1:;
387     }
388     {
389     PyObject *tmp_assign_source_5;
390     tmp_assign_source_5 = tmp_for_loop_1__iter_value;
391  
392     CHECK_OBJECT( tmp_assign_source_5 );
393     {
394         PyObject *old = var_x;
395         var_x = tmp_assign_source_5;
396         Py_INCREF( var_x );
397         Py_XDECREF( old );
398     }
399  
400     }
401     if ( CONSIDER_THREADING() == false )
402     {
403         assert( ERROR_OCCURRED() );
404  
405         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
406  
407  
408         exception_lineno = 34;
409         type_description_1 = "oo";
410         goto try_except_handler_2;
411     }
412     goto loop_start_1;
413     loop_end_1:;
414     }
415     goto try_end_2;
416     // Exception handler code:
417     try_except_handler_2:;
418     exception_keeper_type_2 = exception_type;
419     exception_keeper_value_2 = exception_value;
420     exception_keeper_tb_2 = exception_tb;
421     exception_keeper_lineno_2 = exception_lineno;
422     exception_type = NULL;
423     exception_value = NULL;
424     exception_tb = NULL;
425     exception_lineno = 0;
426  
427     {
428     Py_XDECREF( tmp_for_loop_1__iter_value );
429     tmp_for_loop_1__iter_value = NULL;
430  
431     }
432     {
433     CHECK_OBJECT( (PyObject *)tmp_for_loop_1__for_iterator );
434     Py_DECREF( tmp_for_loop_1__for_iterator );
435     tmp_for_loop_1__for_iterator = NULL;
436  
437     }
438     {
439     // Re-raise.
440     exception_type = exception_keeper_type_2;
441     exception_value = exception_keeper_value_2;
442     exception_tb = exception_keeper_tb_2;
443     exception_lineno = exception_keeper_lineno_2;
444  
445     goto frame_exception_exit_1;
446     }
447     // End of try:
448     try_end_2:;
449     }
450  
451 #if 0
452     RESTORE_FRAME_EXCEPTION( frame_bb18f2b402b9724bc34924d365993bb5 );
453 #endif
454  
455     // Put the previous frame back on top.
456     popFrameStack();
457  
458     goto frame_no_exception_1;
459  
460     frame_exception_exit_1:;
461  
462 #if 0
463     RESTORE_FRAME_EXCEPTION( frame_bb18f2b402b9724bc34924d365993bb5 );
464 #endif
465  
466     if ( exception_tb == NULL )
467     {
468         exception_tb = MAKE_TRACEBACK( frame_bb18f2b402b9724bc34924d365993bb5, exception_lineno );
469     }
470     else if ( exception_tb->tb_frame != &frame_bb18f2b402b9724bc34924d365993bb5->m_frame )
471     {
472         exception_tb = ADD_TRACEBACK( exception_tb, frame_bb18f2b402b9724bc34924d365993bb5, exception_lineno );
473     }
474  
475     // Attachs locals to frame if any.
476     Nuitka_Frame_AttachLocals(
477         (struct Nuitka_FrameObject *)frame_bb18f2b402b9724bc34924d365993bb5,
478         type_description_1,
479         var_x,
480         var_local_value
481     );
482  
483  
484     // Release cached frame.
485     if ( frame_bb18f2b402b9724bc34924d365993bb5 == cache_frame_bb18f2b402b9724bc34924d365993bb5 )
486     {
487         Py_DECREF( frame_bb18f2b402b9724bc34924d365993bb5 );
488     }
489     cache_frame_bb18f2b402b9724bc34924d365993bb5 = NULL;
490  
491     assertFrameObject( frame_bb18f2b402b9724bc34924d365993bb5 );
492  
493     // Put the previous frame back on top.
494     popFrameStack();
495  
496     // Return the error.
497     goto try_except_handler_1;
498  
499     frame_no_exception_1:;
500  
501     {
502     Py_XDECREF( tmp_for_loop_1__iter_value );
503     tmp_for_loop_1__iter_value = NULL;
504  
505     }
506     {
507     CHECK_OBJECT( (PyObject *)tmp_for_loop_1__for_iterator );
508     Py_DECREF( tmp_for_loop_1__for_iterator );
509     tmp_for_loop_1__for_iterator = NULL;
510  
511     }
512     {
513     tmp_return_value = Py_None;
514     Py_INCREF( tmp_return_value );
515     goto try_return_handler_1;
516     }
517     // tried codes exits in all cases
518     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
519     return NULL;
520     // Return handler code:
521     try_return_handler_1:;
522     {
523     Py_XDECREF( var_x );
524     var_x = NULL;
525  
526     }
527     {
528     Py_XDECREF( var_local_value );
529     var_local_value = NULL;
530  
531     }
532     {
533     goto function_return_exit;
534     }
535     // Exception handler code:
536     try_except_handler_1:;
537     exception_keeper_type_3 = exception_type;
538     exception_keeper_value_3 = exception_value;
539     exception_keeper_tb_3 = exception_tb;
540     exception_keeper_lineno_3 = exception_lineno;
541     exception_type = NULL;
542     exception_value = NULL;
543     exception_tb = NULL;
544     exception_lineno = 0;
545  
546     {
547     Py_XDECREF( var_x );
548     var_x = NULL;
549  
550     }
551     {
552     Py_XDECREF( var_local_value );
553     var_local_value = NULL;
554  
555     }
556     {
557     // Re-raise.
558     exception_type = exception_keeper_type_3;
559     exception_value = exception_keeper_value_3;
560     exception_tb = exception_keeper_tb_3;
561     exception_lineno = exception_keeper_lineno_3;
562 295
563     goto function_exception_exit; 296     goto function_exception_exit;
564     } 297     }
565     // End of try: 298     // End of try:
566     } 299     }