Construct ListContraction

Performance Diagrams

Construct ListContraction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)20409533488.11538461538461257.0CPython 3.1066050975240.03846153846155424.14191451466127Nuitka (main)66050999391.96153846153845424.1418854558429Nuitka (develop)66050967543.8846153846154424.141924200934Nuitka (factory)Construct ListContractionTicks Construct ListContraction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)21208275088.11538461538461257.0CPython 3.867101094240.03846153846155425.93027690661023Nuitka (main)67100951391.96153846153845425.93044352789366Nuitka (develop)67099905543.8846153846154425.93166231014874Nuitka (factory)Construct ListContractionTicks Construct ListContraction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)17125168888.11538461538461257.0CPython 2.759056945240.03846153846155418.8964892671261Nuitka (main)59056964391.96153846153845418.896461850215Nuitka (develop)59057133543.8846153846154418.89621798400566Nuitka (factory)Construct ListContractionTicks

Source Code with Construct

for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Source Code without Construct

for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Context Diff of Source Code


Construct
Baseline
9 def calledRepeatedly(): 9 def calledRepeatedly():
10     # Force frame and eliminate forward propagation (currently). 10     # Force frame and eliminate forward propagation (currently).
11     module_value1 11     module_value1
12 12
13     # construct_begin 13     # construct_begin
n 14     l = [x for x in range(7)] n 14  
15     # construct_alternative 15     # construct_alternative
t 16   t 16     l = 1
17   17     # construct_end
18 18
19     return l, x 19     return l, x
20 20
21 21
22 for x in itertools.repeat(None, 50000): 22 for x in itertools.repeat(None, 50000):

Context Diff of Generated Code


Construct
Baseline
77 } 77 }
78 #endif 78 #endif
79 79
80 // The module code objects. 80 // The module code objects.
81 static PyCodeObject *codeobj_fd67aee201c5497df7581ff2cf449118; 81 static PyCodeObject *codeobj_fd67aee201c5497df7581ff2cf449118;
n 82 static PyCodeObject *codeobj_b0848fb5b344e92ae713a7b0bacfd18c; n 82 static PyCodeObject *codeobj_3bbc035e2a28df8369081f2fa6b586d0;
83 /* For use in "MainProgram.c". */ 83 /* For use in "MainProgram.c". */
84 PyCodeObject *codeobj_main = NULL; 84 PyCodeObject *codeobj_main = NULL;
85 85
86 static void createModuleCodeObjects(void) { 86 static void createModuleCodeObjects(void) {
87     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj); 87     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
88     codeobj_fd67aee201c5497df7581ff2cf449118 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[12], mod_consts[12], NULL, NULL, 0, 0, 0); 88     codeobj_fd67aee201c5497df7581ff2cf449118 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[12], mod_consts[12], NULL, NULL, 0, 0, 0);
89     codeobj_main = codeobj_fd67aee201c5497df7581ff2cf449118; 89     codeobj_main = codeobj_fd67aee201c5497df7581ff2cf449118;
n 90     codeobj_b0848fb5b344e92ae713a7b0bacfd18c = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[8], mod_consts[13], NULL, 0, 0, 0); n 90     codeobj_3bbc035e2a28df8369081f2fa6b586d0 = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[8], mod_consts[13], NULL, 0, 0, 0);
91 } 91 }
92 92
93 // The module function declarations. 93 // The module function declarations.
94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
95 95
100 #ifndef __NUITKA_NO_ASSERT__ 100 #ifndef __NUITKA_NO_ASSERT__
101     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate); 101     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate);
102 #endif 102 #endif
103 103
104     // Local variable declarations. 104     // Local variable declarations.
n 105     PyObject *var_x = NULL; n 105     struct Nuitka_FrameObject *frame_3bbc035e2a28df8369081f2fa6b586d0;
106     PyObject *var_l = NULL;
107     PyObject *tmp_list_contraction_1__$0 = NULL;
108     PyObject *tmp_list_contraction_1__contraction_result = NULL;
109     PyObject *tmp_list_contraction_1__iter_value_0 = NULL;
110     struct Nuitka_FrameObject *frame_b0848fb5b344e92ae713a7b0bacfd18c;
111     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 106     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
112     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; 107     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
113     PyObject *exception_type = NULL; 108     PyObject *exception_type = NULL;
114     PyObject *exception_value = NULL; 109     PyObject *exception_value = NULL;
115     PyTracebackObject *exception_tb = NULL; 110     PyTracebackObject *exception_tb = NULL;
116     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 111     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 117     bool tmp_result; n
118     PyObject *exception_keeper_type_1;
119     PyObject *exception_keeper_value_1;
120     PyTracebackObject *exception_keeper_tb_1;
121     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
122     PyObject *tmp_return_value = NULL; 112     PyObject *tmp_return_value = NULL;
n 123     static struct Nuitka_FrameObject *cache_frame_b0848fb5b344e92ae713a7b0bacfd18c = NULL; n 113     static struct Nuitka_FrameObject *cache_frame_3bbc035e2a28df8369081f2fa6b586d0 = NULL;
124     PyObject *exception_keeper_type_2;
125     PyObject *exception_keeper_value_2;
126     PyTracebackObject *exception_keeper_tb_2;
127     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
128 114
129     // Actual function body. 115     // Actual function body.
n 130     // Tried code: n 116     if (isFrameUnusable(cache_frame_3bbc035e2a28df8369081f2fa6b586d0)) {
131     if (isFrameUnusable(cache_frame_b0848fb5b344e92ae713a7b0bacfd18c)) { 117         Py_XDECREF(cache_frame_3bbc035e2a28df8369081f2fa6b586d0);
132         Py_XDECREF(cache_frame_b0848fb5b344e92ae713a7b0bacfd18c);
133 118
134 #if _DEBUG_REFCOUNTS 119 #if _DEBUG_REFCOUNTS
n 135         if (cache_frame_b0848fb5b344e92ae713a7b0bacfd18c == NULL) { n 120         if (cache_frame_3bbc035e2a28df8369081f2fa6b586d0 == NULL) {
136             count_active_frame_cache_instances += 1; 121             count_active_frame_cache_instances += 1;
137         } else { 122         } else {
138             count_released_frame_cache_instances += 1; 123             count_released_frame_cache_instances += 1;
139         } 124         }
140         count_allocated_frame_cache_instances += 1; 125         count_allocated_frame_cache_instances += 1;
141 #endif 126 #endif
n 142         cache_frame_b0848fb5b344e92ae713a7b0bacfd18c = MAKE_FUNCTION_FRAME(tstate, codeobj_b0848fb5b344e92ae713a7b0bacfd18c, module___main__, sizeof(void *)+sizeof(void *)); n 127         cache_frame_3bbc035e2a28df8369081f2fa6b586d0 = MAKE_FUNCTION_FRAME(tstate, codeobj_3bbc035e2a28df8369081f2fa6b586d0, module___main__, sizeof(void *));
143 #if _DEBUG_REFCOUNTS 128 #if _DEBUG_REFCOUNTS
144     } else { 129     } else {
145         count_hit_frame_cache_instances += 1; 130         count_hit_frame_cache_instances += 1;
146 #endif 131 #endif
147     } 132     }
148 133
n 149     assert(cache_frame_b0848fb5b344e92ae713a7b0bacfd18c->m_type_description == NULL); n 134     assert(cache_frame_3bbc035e2a28df8369081f2fa6b586d0->m_type_description == NULL);
150     frame_b0848fb5b344e92ae713a7b0bacfd18c = cache_frame_b0848fb5b344e92ae713a7b0bacfd18c; 135     frame_3bbc035e2a28df8369081f2fa6b586d0 = cache_frame_3bbc035e2a28df8369081f2fa6b586d0;
151 136
152     // Push the new frame as the currently active one, and we should be exclusively 137     // Push the new frame as the currently active one, and we should be exclusively
153     // owning it. 138     // owning it.
n 154     pushFrameStackCompiledFrame(tstate, frame_b0848fb5b344e92ae713a7b0bacfd18c); n 139     pushFrameStackCompiledFrame(tstate, frame_3bbc035e2a28df8369081f2fa6b586d0);
155     assert(Py_REFCNT(frame_b0848fb5b344e92ae713a7b0bacfd18c) == 2); 140     assert(Py_REFCNT(frame_3bbc035e2a28df8369081f2fa6b586d0) == 2);
156 141
157     // Framed code: 142     // Framed code:
158     { 143     {
159         PyObject *tmp_mvar_value_1; 144         PyObject *tmp_mvar_value_1;
160         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]); 145         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
168 153
169             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 154             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
170 155
171 156
172             exception_lineno = 11; 157             exception_lineno = 11;
n 173             type_description_1 = "oo"; n 158             type_description_1 = "N";
174             goto frame_exception_exit_1; 159             goto frame_exception_exit_1;
175         } 160         }
176     } 161     }
177     { 162     {
n 178         PyObject *tmp_assign_source_1; n
179         {
180             PyObject *tmp_assign_source_2;
181             PyObject *tmp_iter_arg_1;
182             tmp_iter_arg_1 = mod_consts[1];
183             tmp_assign_source_2 = MAKE_ITERATOR_INFALLIBLE(tmp_iter_arg_1);
184             assert(!(tmp_assign_source_2 == NULL));
185             assert(tmp_list_contraction_1__$0 == NULL);
186             tmp_list_contraction_1__$0 = tmp_assign_source_2;
187         }
188         {
189             PyObject *tmp_assign_source_3;
190             tmp_assign_source_3 = MAKE_LIST_EMPTY(0);
191             assert(tmp_list_contraction_1__contraction_result == NULL);
192             tmp_list_contraction_1__contraction_result = tmp_assign_source_3;
193         }
194         // Tried code:
195         loop_start_1:;
196         {
197             PyObject *tmp_next_source_1;
198             PyObject *tmp_assign_source_4;
199             CHECK_OBJECT(tmp_list_contraction_1__$0);
200             tmp_next_source_1 = tmp_list_contraction_1__$0;
201             tmp_assign_source_4 = ITERATOR_NEXT(tmp_next_source_1);
202             if (tmp_assign_source_4 == NULL) {
203                 if (CHECK_AND_CLEAR_STOP_ITERATION_OCCURRED(tstate)) {
204  
205                     goto loop_end_1;
206                 } else {
207  
208                     FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
209                     type_description_1 = "oo";
210                     exception_lineno = 14;
211                     goto try_except_handler_2;
212                 }
213             }
214  
215             {
216                 PyObject *old = tmp_list_contraction_1__iter_value_0;
217                 tmp_list_contraction_1__iter_value_0 = tmp_assign_source_4;
218                 Py_XDECREF(old);
219             }
220  
221         }
222         {
223             PyObject *tmp_assign_source_5;
224             CHECK_OBJECT(tmp_list_contraction_1__iter_value_0);
225             tmp_assign_source_5 = tmp_list_contraction_1__iter_value_0;
226             {
227                 PyObject *old = var_x;
228                 var_x = tmp_assign_source_5;
229                 Py_INCREF(var_x);
230                 Py_XDECREF(old);
231             }
232  
233         }
234         {
235             PyObject *tmp_append_list_1;
236             PyObject *tmp_append_value_1;
237             CHECK_OBJECT(tmp_list_contraction_1__contraction_result);
238             tmp_append_list_1 = tmp_list_contraction_1__contraction_result;
239             CHECK_OBJECT(var_x);
240             tmp_append_value_1 = var_x;
241             tmp_result = LIST_APPEND0(tmp_append_list_1, tmp_append_value_1);
242             if (tmp_result == false) {
243                 assert(HAS_ERROR_OCCURRED(tstate));
244  
245                 FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
246  
247  
248                 exception_lineno = 14;
249                 type_description_1 = "oo";
250                 goto try_except_handler_2;
251             }
252         }
253         if (CONSIDER_THREADING(tstate) == false) {
254             assert(HAS_ERROR_OCCURRED(tstate));
255  
256             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
257  
258  
259             exception_lineno = 14;
260             type_description_1 = "oo";
261             goto try_except_handler_2;
262         }
263         goto loop_start_1;
264         loop_end_1:;
265         CHECK_OBJECT(tmp_list_contraction_1__contraction_result);
266         tmp_assign_source_1 = tmp_list_contraction_1__contraction_result;
267         Py_INCREF(tmp_assign_source_1);
268         goto try_return_handler_2;
269         NUITKA_CANNOT_GET_HERE("tried codes exits in all cases");
270         return NULL;
271         // Return handler code:
272         try_return_handler_2:;
273         CHECK_OBJECT(tmp_list_contraction_1__$0);
274         Py_DECREF(tmp_list_contraction_1__$0);
275         tmp_list_contraction_1__$0 = NULL;
276         CHECK_OBJECT(tmp_list_contraction_1__contraction_result);
277         Py_DECREF(tmp_list_contraction_1__contraction_result);
278         tmp_list_contraction_1__contraction_result = NULL;
279         Py_XDECREF(tmp_list_contraction_1__iter_value_0);
280         tmp_list_contraction_1__iter_value_0 = NULL;
281         goto outline_result_1;
282         // Exception handler code:
283         try_except_handler_2:;
284         exception_keeper_type_1 = exception_type;
285         exception_keeper_value_1 = exception_value;
286         exception_keeper_tb_1 = exception_tb;
287         exception_keeper_lineno_1 = exception_lineno;
288         exception_type = NULL;
289         exception_value = NULL;
290         exception_tb = NULL;
291         exception_lineno = 0;
292  
293         CHECK_OBJECT(tmp_list_contraction_1__$0);
294         Py_DECREF(tmp_list_contraction_1__$0);
295         tmp_list_contraction_1__$0 = NULL;
296         CHECK_OBJECT(tmp_list_contraction_1__contraction_result);
297         Py_DECREF(tmp_list_contraction_1__contraction_result);
298         tmp_list_contraction_1__contraction_result = NULL;
299         Py_XDECREF(tmp_list_contraction_1__iter_value_0);
300         tmp_list_contraction_1__iter_value_0 = NULL;
301         // Re-raise.
302         exception_type = exception_keeper_type_1;
303         exception_value = exception_keeper_value_1;
304         exception_tb = exception_keeper_tb_1;
305         exception_lineno = exception_keeper_lineno_1;
306  
307         goto frame_exception_exit_1;
308         // End of try:
309         NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
310         return NULL;
311         outline_result_1:;
312         assert(var_l == NULL);
313         var_l = tmp_assign_source_1;
314     }
315     {
316         PyObject *tmp_tuple_element_1; 163         PyObject *tmp_tuple_element_1;
n 317         CHECK_OBJECT(var_l); n
318         tmp_tuple_element_1 = var_l; 164         tmp_tuple_element_1 = mod_consts[1];
319         tmp_return_value = MAKE_TUPLE_EMPTY(2); 165         tmp_return_value = MAKE_TUPLE_EMPTY(2);
320         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1); 166         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1);
n 321         if (var_x == NULL) { n 167         tmp_tuple_element_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[2]);
322 168
n 323             FORMAT_UNBOUND_LOCAL_ERROR(&exception_type, &exception_value, mod_consts[2]); n 169         if (unlikely(tmp_tuple_element_1 == NULL)) {
324             exception_tb = NULL; 170             tmp_tuple_element_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[2]);
171         }
172  
173         if (tmp_tuple_element_1 == NULL) {
174             assert(HAS_ERROR_OCCURRED(tstate));
175  
176             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
177  
325 178
326             exception_lineno = 19; 179             exception_lineno = 19;
n 327             type_description_1 = "oo"; n 180             type_description_1 = "N";
328             goto tuple_build_exception_1; 181             goto tuple_build_exception_1;
329         } 182         }
n 330   n
331         tmp_tuple_element_1 = var_x;
332         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1); 183         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1);
333         goto tuple_build_noexception_1; 184         goto tuple_build_noexception_1;
334         // Exception handling pass through code for tuple_build: 185         // Exception handling pass through code for tuple_build:
335         tuple_build_exception_1:; 186         tuple_build_exception_1:;
336         Py_DECREF(tmp_return_value); 187         Py_DECREF(tmp_return_value);
348     frame_return_exit_1: 199     frame_return_exit_1:
349 200
350     // Put the previous frame back on top. 201     // Put the previous frame back on top.
351     popFrameStack(tstate); 202     popFrameStack(tstate);
352 203
n 353     goto try_return_handler_1; n 204     goto function_return_exit;
354     frame_exception_exit_1: 205     frame_exception_exit_1:
355 206
356 207
357     if (exception_tb == NULL) { 208     if (exception_tb == NULL) {
n 358         exception_tb = MAKE_TRACEBACK(frame_b0848fb5b344e92ae713a7b0bacfd18c, exception_lineno); n 209         exception_tb = MAKE_TRACEBACK(frame_3bbc035e2a28df8369081f2fa6b586d0, exception_lineno);
359     } else if (exception_tb->tb_frame != &frame_b0848fb5b344e92ae713a7b0bacfd18c->m_frame) { 210     } else if (exception_tb->tb_frame != &frame_3bbc035e2a28df8369081f2fa6b586d0->m_frame) {
360         exception_tb = ADD_TRACEBACK(exception_tb, frame_b0848fb5b344e92ae713a7b0bacfd18c, exception_lineno); 211         exception_tb = ADD_TRACEBACK(exception_tb, frame_3bbc035e2a28df8369081f2fa6b586d0, exception_lineno);
361     } 212     }
362 213
363     // Attaches locals to frame if any. 214     // Attaches locals to frame if any.
364     Nuitka_Frame_AttachLocals( 215     Nuitka_Frame_AttachLocals(
n 365         frame_b0848fb5b344e92ae713a7b0bacfd18c, n 216         frame_3bbc035e2a28df8369081f2fa6b586d0,
366         type_description_1, 217         type_description_1,
n 367         var_x, n 218         NULL
368         var_l
369     ); 219     );
370 220
371 221
372     // Release cached frame if used for exception. 222     // Release cached frame if used for exception.
n 373     if (frame_b0848fb5b344e92ae713a7b0bacfd18c == cache_frame_b0848fb5b344e92ae713a7b0bacfd18c) { n 223     if (frame_3bbc035e2a28df8369081f2fa6b586d0 == cache_frame_3bbc035e2a28df8369081f2fa6b586d0) {
374 #if _DEBUG_REFCOUNTS 224 #if _DEBUG_REFCOUNTS
375         count_active_frame_cache_instances -= 1; 225         count_active_frame_cache_instances -= 1;
376         count_released_frame_cache_instances += 1; 226         count_released_frame_cache_instances += 1;
377 #endif 227 #endif
n 378         Py_DECREF(cache_frame_b0848fb5b344e92ae713a7b0bacfd18c); n 228         Py_DECREF(cache_frame_3bbc035e2a28df8369081f2fa6b586d0);
379         cache_frame_b0848fb5b344e92ae713a7b0bacfd18c = NULL; 229         cache_frame_3bbc035e2a28df8369081f2fa6b586d0 = NULL;
380     } 230     }
381 231
n 382     assertFrameObject(frame_b0848fb5b344e92ae713a7b0bacfd18c); n 232     assertFrameObject(frame_3bbc035e2a28df8369081f2fa6b586d0);
383 233
384     // Put the previous frame back on top. 234     // Put the previous frame back on top.
385     popFrameStack(tstate); 235     popFrameStack(tstate);
386 236
387     // Return the error. 237     // Return the error.
n 388     goto try_except_handler_1; n 238     goto function_exception_exit;
389     frame_no_exception_1:; 239     frame_no_exception_1:;
n 390     NUITKA_CANNOT_GET_HERE("tried codes exits in all cases"); n
391     return NULL;
392     // Return handler code:
393     try_return_handler_1:;
394     Py_XDECREF(var_x);
395     var_x = NULL;
396     CHECK_OBJECT(var_l);
397     Py_DECREF(var_l);
398     var_l = NULL;
399     goto function_return_exit;
400     // Exception handler code:
401     try_except_handler_1:;
402     exception_keeper_type_2 = exception_type;
403     exception_keeper_value_2 = exception_value;
404     exception_keeper_tb_2 = exception_tb;
405     exception_keeper_lineno_2 = exception_lineno;
406     exception_type = NULL;
407     exception_value = NULL;
408     exception_tb = NULL;
409     exception_lineno = 0;
410  
411     Py_XDECREF(var_x);
412     var_x = NULL;
413     Py_XDECREF(var_l);
414     var_l = NULL;
415     // Re-raise.
416     exception_type = exception_keeper_type_2;
417     exception_value = exception_keeper_value_2;
418     exception_tb = exception_keeper_tb_2;
419     exception_lineno = exception_keeper_lineno_2;
420  
421     goto function_exception_exit;
422     // End of try:
423 240
424     NUITKA_CANNOT_GET_HERE("Return statement must have exited already."); 241     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
425     return NULL; 242     return NULL;
426 243
427 function_exception_exit: 244 function_exception_exit:
449         impl___main__$$$function__1_calledRepeatedly, 266         impl___main__$$$function__1_calledRepeatedly,
450         mod_consts[8], 267         mod_consts[8],
451 #if PYTHON_VERSION >= 0x300 268 #if PYTHON_VERSION >= 0x300
452         NULL, 269         NULL,
453 #endif 270 #endif
t 454         codeobj_b0848fb5b344e92ae713a7b0bacfd18c, t 271         codeobj_3bbc035e2a28df8369081f2fa6b586d0,
455         NULL, 272         NULL,
456 #if PYTHON_VERSION >= 0x300 273 #if PYTHON_VERSION >= 0x300
457         NULL, 274         NULL,
458         NULL, 275         NULL,
459 #endif 276 #endif