Construct FunctionCreationClosure

Performance Diagrams

Construct FunctionCreationClosure 0020000002000000400000040000006000000600000080000008000000100000001000000012000000120000001400000014000000160000001600000018000000180000002000000020000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)2179986588.95192307692307257.0CPython 3.103404054242.31730769230768465.5282597198159Nuitka (main)3403822395.6826923076923465.5308895879013Nuitka (develop)3401075549.0480769230769465.56202858630974Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 002000000200000040000004000000600000060000008000000800000010000000100000001200000012000000140000001400000016000000160000001800000018000000200000002000000022000000220000002400000024000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)2515013988.95192307692307257.0CPython 3.83701286242.31730769230768467.7480025718286Nuitka (main)3701564395.6826923076923467.74527105305157Nuitka (develop)3700534549.0480769230769467.75539142837647Nuitka (factory)Construct FunctionCreationClosureTicks Construct FunctionCreationClosure 0020000002000000400000040000006000000600000080000008000000100000001000000012000000120000001400000014000000160000001600000018000000180000002000000020000000220000002200000024000000240000002600000026000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)2694412188.95192307692307257.0CPython 2.72801124242.31730769230768478.4251483439774Nuitka (main)2801220395.6826923076923478.42426788931635Nuitka (develop)2800687549.0480769230769478.4291562469659Nuitka (factory)Construct FunctionCreationClosureTicks

Source Code with Construct

    return empty, x


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

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

    # construct_end

    return empty, x


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

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(x): 9 def calledRepeatedly(x):
10     # Force a local frame for now 10     # Force a local frame for now
11     module_var 11     module_var
12 12
13     # construct_begin 13     # construct_begin
n 14     def empty(): n
15         return x
16  
17     # construct_alternative
18 14
19 15
20 16
n n 17     # construct_alternative
18     def empty():
19         return module_var
21 20
t t 21     # construct_end
22 22
23     return empty, x 23     return empty, x
24 24
25 25
26 for x in itertools.repeat(None, 50000): 26 for x in itertools.repeat(None, 50000):

Context Diff of Generated Code


Construct
Baseline
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *mod_consts[14]; n 36 static PyObject *mod_consts[13];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[14]; n 38 static Py_hash_t mod_consts_hash[13];
39 #endif 39 #endif
40 40
41 static PyObject *module_filename_obj = NULL; 41 static PyObject *module_filename_obj = NULL;
42 42
43 /* Indicator if this modules private constants were created yet. */ 43 /* Indicator if this modules private constants were created yet. */
48     if (constants_created == false) { 48     if (constants_created == false) {
49         loadConstantsBlob(tstate, &mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(tstate, &mod_consts[0], UNTRANSLATE("__main__"));
50         constants_created = true; 50         constants_created = true;
51 51
52 #ifndef __NUITKA_NO_ASSERT__ 52 #ifndef __NUITKA_NO_ASSERT__
n 53         for (int i = 0; i < 14; i++) { n 53         for (int i = 0; i < 13; i++) {
54             mod_consts_hash[i] = DEEP_HASH(tstate, mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(tstate, mod_consts[i]);
55         } 55         }
56 #endif 56 #endif
57     } 57     }
58 } 58 }
68 #ifndef __NUITKA_NO_ASSERT__ 68 #ifndef __NUITKA_NO_ASSERT__
69 void checkModuleConstants___main__(PyThreadState *tstate) { 69 void checkModuleConstants___main__(PyThreadState *tstate) {
70     // The module may not have been used at all, then ignore this. 70     // The module may not have been used at all, then ignore this.
71     if (constants_created == false) return; 71     if (constants_created == false) return;
72 72
n 73     for (int i = 0; i < 14; i++) { n 73     for (int i = 0; i < 13; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, mod_consts[i]));
75         CHECK_OBJECT_DEEP(mod_consts[i]); 75         CHECK_OBJECT_DEEP(mod_consts[i]);
76     } 76     }
77 } 77 }
78 #endif 78 #endif
79 79
80 // The module code objects. 80 // The module code objects.
81 static PyCodeObject *codeobj_aa5f5f901fb53b8c50b9df95f8c03013; 81 static PyCodeObject *codeobj_aa5f5f901fb53b8c50b9df95f8c03013;
82 static PyCodeObject *codeobj_919f7a0949fa9b57f00b75f76499d3ef; 82 static PyCodeObject *codeobj_919f7a0949fa9b57f00b75f76499d3ef;
n 83 static PyCodeObject *codeobj_be9832b72d07ce3c1b489ef49dcb2d62; n 83 static PyCodeObject *codeobj_cd8daff2e5ffc1ed094ee987b355e6fe;
84 /* For use in "MainProgram.c". */ 84 /* For use in "MainProgram.c". */
85 PyCodeObject *codeobj_main = NULL; 85 PyCodeObject *codeobj_main = NULL;
86 86
87 static void createModuleCodeObjects(void) { 87 static void createModuleCodeObjects(void) {
n 88     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj); n 88     module_filename_obj = mod_consts[3]; CHECK_OBJECT(module_filename_obj);
89     codeobj_aa5f5f901fb53b8c50b9df95f8c03013 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[11], mod_consts[11], NULL, NULL, 0, 0, 0); 89     codeobj_aa5f5f901fb53b8c50b9df95f8c03013 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[11], mod_consts[11], NULL, NULL, 0, 0, 0);
90     codeobj_main = codeobj_aa5f5f901fb53b8c50b9df95f8c03013; 90     codeobj_main = codeobj_aa5f5f901fb53b8c50b9df95f8c03013;
n 91     codeobj_919f7a0949fa9b57f00b75f76499d3ef = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[7], mod_consts[7], mod_consts[12], NULL, 1, 0, 0); n 91     codeobj_919f7a0949fa9b57f00b75f76499d3ef = MAKE_CODE_OBJECT(module_filename_obj, 9, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[6], mod_consts[6], mod_consts[12], NULL, 1, 0, 0);
92     codeobj_be9832b72d07ce3c1b489ef49dcb2d62 = MAKE_CODE_OBJECT(module_filename_obj, 14, CO_OPTIMIZED | CO_NEWLOCALS, mod_consts[1], mod_consts[1], mod_consts[13], mod_consts[13], 0, 0, 0); 92     codeobj_cd8daff2e5ffc1ed094ee987b355e6fe = MAKE_CODE_OBJECT(module_filename_obj, 18, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[1], mod_consts[1], NULL, NULL, 0, 0, 0);
93 } 93 }
94 94
95 // The module function declarations. 95 // The module function declarations.
96 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 96 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
97 97
98 98
n 99 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(struct Nuitka_CellObject **closure); n 99 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty();
100 100
101 101
102 // The module function definitions. 102 // The module function definitions.
103 static PyObject *impl___main__$$$function__1_calledRepeatedly(PyThreadState *tstate, struct Nuitka_FunctionObject const *self, PyObject **python_pars) { 103 static PyObject *impl___main__$$$function__1_calledRepeatedly(PyThreadState *tstate, struct Nuitka_FunctionObject const *self, PyObject **python_pars) {
104     // Preserve error status for checks 104     // Preserve error status for checks
105 #ifndef __NUITKA_NO_ASSERT__ 105 #ifndef __NUITKA_NO_ASSERT__
106     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate); 106     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate);
107 #endif 107 #endif
108 108
109     // Local variable declarations. 109     // Local variable declarations.
n 110     struct Nuitka_CellObject *par_x = Nuitka_Cell_New1(python_pars[0]); n 110     PyObject *par_x = python_pars[0];
111     PyObject *var_empty = NULL; 111     PyObject *var_empty = NULL;
112     struct Nuitka_FrameObject *frame_919f7a0949fa9b57f00b75f76499d3ef; 112     struct Nuitka_FrameObject *frame_919f7a0949fa9b57f00b75f76499d3ef;
113     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 113     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
114     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; 114     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
115     PyObject *exception_type = NULL; 115     PyObject *exception_type = NULL;
165 165
166             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 166             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
167 167
168 168
169             exception_lineno = 11; 169             exception_lineno = 11;
n 170             type_description_1 = "co"; n 170             type_description_1 = "oo";
171             goto frame_exception_exit_1; 171             goto frame_exception_exit_1;
172         } 172         }
173     } 173     }
174 174
175 175
213     // Return the error. 213     // Return the error.
214     goto try_except_handler_1; 214     goto try_except_handler_1;
215     frame_no_exception_1:; 215     frame_no_exception_1:;
216     { 216     {
217         PyObject *tmp_assign_source_1; 217         PyObject *tmp_assign_source_1;
n 218         struct Nuitka_CellObject *tmp_closure_1[1]; n
219 218
n 220         tmp_closure_1[0] = par_x; n
221         Py_INCREF(tmp_closure_1[0]);
222 219
n 223         tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(tmp_closure_1); n 220         tmp_assign_source_1 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty();
224 221
225         assert(var_empty == NULL); 222         assert(var_empty == NULL);
226         var_empty = tmp_assign_source_1; 223         var_empty = tmp_assign_source_1;
227     } 224     }
228     { 225     {
229         PyObject *tmp_tuple_element_1; 226         PyObject *tmp_tuple_element_1;
230         CHECK_OBJECT(var_empty); 227         CHECK_OBJECT(var_empty);
231         tmp_tuple_element_1 = var_empty; 228         tmp_tuple_element_1 = var_empty;
232         tmp_return_value = MAKE_TUPLE_EMPTY(2); 229         tmp_return_value = MAKE_TUPLE_EMPTY(2);
233         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1); 230         PyTuple_SET_ITEM0(tmp_return_value, 0, tmp_tuple_element_1);
n 234         CHECK_OBJECT(Nuitka_Cell_GET(par_x)); n 231         CHECK_OBJECT(par_x);
235         tmp_tuple_element_1 = Nuitka_Cell_GET(par_x); 232         tmp_tuple_element_1 = par_x;
236         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1); 233         PyTuple_SET_ITEM0(tmp_return_value, 1, tmp_tuple_element_1);
237         goto try_return_handler_1; 234         goto try_return_handler_1;
238     } 235     }
239     NUITKA_CANNOT_GET_HERE("tried codes exits in all cases"); 236     NUITKA_CANNOT_GET_HERE("tried codes exits in all cases");
240     return NULL; 237     return NULL;
293 #ifndef __NUITKA_NO_ASSERT__ 290 #ifndef __NUITKA_NO_ASSERT__
294     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate); 291     NUITKA_MAY_BE_UNUSED bool had_error = HAS_ERROR_OCCURRED(tstate);
295 #endif 292 #endif
296 293
297     // Local variable declarations. 294     // Local variable declarations.
n 298     struct Nuitka_FrameObject *frame_be9832b72d07ce3c1b489ef49dcb2d62; n 295     struct Nuitka_FrameObject *frame_cd8daff2e5ffc1ed094ee987b355e6fe;
299     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 296     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
300     PyObject *tmp_return_value = NULL; 297     PyObject *tmp_return_value = NULL;
301     PyObject *exception_type = NULL; 298     PyObject *exception_type = NULL;
302     PyObject *exception_value = NULL; 299     PyObject *exception_value = NULL;
303     PyTracebackObject *exception_tb = NULL; 300     PyTracebackObject *exception_tb = NULL;
304     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 301     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 305     static struct Nuitka_FrameObject *cache_frame_be9832b72d07ce3c1b489ef49dcb2d62 = NULL; n 302     static struct Nuitka_FrameObject *cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe = NULL;
306 303
307     // Actual function body. 304     // Actual function body.
n 308     if (isFrameUnusable(cache_frame_be9832b72d07ce3c1b489ef49dcb2d62)) { n 305     if (isFrameUnusable(cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe)) {
309         Py_XDECREF(cache_frame_be9832b72d07ce3c1b489ef49dcb2d62); 306         Py_XDECREF(cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe);
310 307
311 #if _DEBUG_REFCOUNTS 308 #if _DEBUG_REFCOUNTS
n 312         if (cache_frame_be9832b72d07ce3c1b489ef49dcb2d62 == NULL) { n 309         if (cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe == NULL) {
313             count_active_frame_cache_instances += 1; 310             count_active_frame_cache_instances += 1;
314         } else { 311         } else {
315             count_released_frame_cache_instances += 1; 312             count_released_frame_cache_instances += 1;
316         } 313         }
317         count_allocated_frame_cache_instances += 1; 314         count_allocated_frame_cache_instances += 1;
318 #endif 315 #endif
n 319         cache_frame_be9832b72d07ce3c1b489ef49dcb2d62 = MAKE_FUNCTION_FRAME(tstate, codeobj_be9832b72d07ce3c1b489ef49dcb2d62, module___main__, sizeof(void *)); n 316         cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe = MAKE_FUNCTION_FRAME(tstate, codeobj_cd8daff2e5ffc1ed094ee987b355e6fe, module___main__, 0);
320 #if _DEBUG_REFCOUNTS 317 #if _DEBUG_REFCOUNTS
321     } else { 318     } else {
322         count_hit_frame_cache_instances += 1; 319         count_hit_frame_cache_instances += 1;
323 #endif 320 #endif
324     } 321     }
325 322
n 326     assert(cache_frame_be9832b72d07ce3c1b489ef49dcb2d62->m_type_description == NULL); n 323     assert(cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe->m_type_description == NULL);
327     frame_be9832b72d07ce3c1b489ef49dcb2d62 = cache_frame_be9832b72d07ce3c1b489ef49dcb2d62; 324     frame_cd8daff2e5ffc1ed094ee987b355e6fe = cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe;
328 325
329     // Push the new frame as the currently active one, and we should be exclusively 326     // Push the new frame as the currently active one, and we should be exclusively
330     // owning it. 327     // owning it.
n 331     pushFrameStackCompiledFrame(tstate, frame_be9832b72d07ce3c1b489ef49dcb2d62); n 328     pushFrameStackCompiledFrame(tstate, frame_cd8daff2e5ffc1ed094ee987b355e6fe);
332     assert(Py_REFCNT(frame_be9832b72d07ce3c1b489ef49dcb2d62) == 2); 329     assert(Py_REFCNT(frame_cd8daff2e5ffc1ed094ee987b355e6fe) == 2);
333 330
334     // Framed code: 331     // Framed code:
n 335     if (Nuitka_Cell_GET(self->m_closure[0]) == NULL) { n 332     tmp_return_value = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
336 333
n 337         FORMAT_UNBOUND_CLOSURE_ERROR(&exception_type, &exception_value, mod_consts[2]); n 334     if (unlikely(tmp_return_value == NULL)) {
338         exception_tb = NULL; 335         tmp_return_value = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[0]);
336     }
339 337
n n 338     if (tmp_return_value == NULL) {
339         assert(HAS_ERROR_OCCURRED(tstate));
340  
341         FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
342  
343  
340         exception_lineno = 15; 344         exception_lineno = 19;
341         type_description_1 = "c"; 345  
342         goto frame_exception_exit_1; 346         goto frame_exception_exit_1;
343     } 347     }
n 344   n
345     tmp_return_value = Nuitka_Cell_GET(self->m_closure[0]);
346     Py_INCREF(tmp_return_value); 348     Py_INCREF(tmp_return_value);
347     goto frame_return_exit_1; 349     goto frame_return_exit_1;
348 350
349 351
350     // Put the previous frame back on top. 352     // Put the previous frame back on top.
359     goto function_return_exit; 361     goto function_return_exit;
360     frame_exception_exit_1: 362     frame_exception_exit_1:
361 363
362 364
363     if (exception_tb == NULL) { 365     if (exception_tb == NULL) {
n 364         exception_tb = MAKE_TRACEBACK(frame_be9832b72d07ce3c1b489ef49dcb2d62, exception_lineno); n 366         exception_tb = MAKE_TRACEBACK(frame_cd8daff2e5ffc1ed094ee987b355e6fe, exception_lineno);
365     } else if (exception_tb->tb_frame != &frame_be9832b72d07ce3c1b489ef49dcb2d62->m_frame) { 367     } else if (exception_tb->tb_frame != &frame_cd8daff2e5ffc1ed094ee987b355e6fe->m_frame) {
366         exception_tb = ADD_TRACEBACK(exception_tb, frame_be9832b72d07ce3c1b489ef49dcb2d62, exception_lineno); 368         exception_tb = ADD_TRACEBACK(exception_tb, frame_cd8daff2e5ffc1ed094ee987b355e6fe, exception_lineno);
367     } 369     }
368 370
369     // Attaches locals to frame if any. 371     // Attaches locals to frame if any.
370     Nuitka_Frame_AttachLocals( 372     Nuitka_Frame_AttachLocals(
n 371         frame_be9832b72d07ce3c1b489ef49dcb2d62, n 373         frame_cd8daff2e5ffc1ed094ee987b355e6fe,
372         type_description_1, 374         type_description_1
373         self->m_closure[0]
374     ); 375     );
375 376
376 377
377     // Release cached frame if used for exception. 378     // Release cached frame if used for exception.
n 378     if (frame_be9832b72d07ce3c1b489ef49dcb2d62 == cache_frame_be9832b72d07ce3c1b489ef49dcb2d62) { n 379     if (frame_cd8daff2e5ffc1ed094ee987b355e6fe == cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe) {
379 #if _DEBUG_REFCOUNTS 380 #if _DEBUG_REFCOUNTS
380         count_active_frame_cache_instances -= 1; 381         count_active_frame_cache_instances -= 1;
381         count_released_frame_cache_instances += 1; 382         count_released_frame_cache_instances += 1;
382 #endif 383 #endif
n 383         Py_DECREF(cache_frame_be9832b72d07ce3c1b489ef49dcb2d62); n 384         Py_DECREF(cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe);
384         cache_frame_be9832b72d07ce3c1b489ef49dcb2d62 = NULL; 385         cache_frame_cd8daff2e5ffc1ed094ee987b355e6fe = NULL;
385     } 386     }
386 387
n 387     assertFrameObject(frame_be9832b72d07ce3c1b489ef49dcb2d62); n 388     assertFrameObject(frame_cd8daff2e5ffc1ed094ee987b355e6fe);
388 389
389     // Put the previous frame back on top. 390     // Put the previous frame back on top.
390     popFrameStack(tstate); 391     popFrameStack(tstate);
391 392
392     // Return the error. 393     // Return the error.
417 418
418 419
419 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 420 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
420     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 421     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
421         impl___main__$$$function__1_calledRepeatedly, 422         impl___main__$$$function__1_calledRepeatedly,
n 422         mod_consts[7], n 423         mod_consts[6],
423 #if PYTHON_VERSION >= 0x300 424 #if PYTHON_VERSION >= 0x300
424         NULL, 425         NULL,
425 #endif 426 #endif
426         codeobj_919f7a0949fa9b57f00b75f76499d3ef, 427         codeobj_919f7a0949fa9b57f00b75f76499d3ef,
427         NULL, 428         NULL,
439     return (PyObject *)result; 440     return (PyObject *)result;
440 } 441 }
441 442
442 443
443 444
n 444 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty(struct Nuitka_CellObject **closure) { n 445 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly$$$function__1_empty() {
445     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 446     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
446         impl___main__$$$function__1_calledRepeatedly$$$function__1_empty, 447         impl___main__$$$function__1_calledRepeatedly$$$function__1_empty,
447         mod_consts[1], 448         mod_consts[1],
448 #if PYTHON_VERSION >= 0x300 449 #if PYTHON_VERSION >= 0x300
449         NULL, 450         NULL,
450 #endif 451 #endif
n 451         codeobj_be9832b72d07ce3c1b489ef49dcb2d62, n 452         codeobj_cd8daff2e5ffc1ed094ee987b355e6fe,
452         NULL, 453         NULL,
453 #if PYTHON_VERSION >= 0x300 454 #if PYTHON_VERSION >= 0x300
454         NULL, 455         NULL,
455         NULL, 456         NULL,
456 #endif 457 #endif
457         module___main__, 458         module___main__,
458         NULL, 459         NULL,
n 459         closure, n 460         NULL,
460         1 461         0
461     ); 462     );
462 463
463 464
464     return (PyObject *)result; 465     return (PyObject *)result;
465 } 466 }
833 834
834     // Module code. 835     // Module code.
835     { 836     {
836         PyObject *tmp_assign_source_1; 837         PyObject *tmp_assign_source_1;
837         tmp_assign_source_1 = Py_None; 838         tmp_assign_source_1 = Py_None;
n 838         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 839         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
839     } 840     }
840     { 841     {
841         PyObject *tmp_assign_source_2; 842         PyObject *tmp_assign_source_2;
n 842         tmp_assign_source_2 = mod_consts[4]; n 843         tmp_assign_source_2 = mod_consts[3];
843         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 844         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
844     } 845     }
845     frame_aa5f5f901fb53b8c50b9df95f8c03013 = MAKE_MODULE_FRAME(codeobj_aa5f5f901fb53b8c50b9df95f8c03013, module___main__); 846     frame_aa5f5f901fb53b8c50b9df95f8c03013 = MAKE_MODULE_FRAME(codeobj_aa5f5f901fb53b8c50b9df95f8c03013, module___main__);
846 847
847     // Push the new frame as the currently active one, and we should be exclusively 848     // Push the new frame as the currently active one, and we should be exclusively
848     // owning it. 849     // owning it.
854         PyObject *tmp_assign_source_3; 855         PyObject *tmp_assign_source_3;
855         PyObject *tmp_name_value_1; 856         PyObject *tmp_name_value_1;
856         PyObject *tmp_globals_arg_value_1; 857         PyObject *tmp_globals_arg_value_1;
857         PyObject *tmp_locals_arg_value_1; 858         PyObject *tmp_locals_arg_value_1;
858         PyObject *tmp_fromlist_value_1; 859         PyObject *tmp_fromlist_value_1;
n 859         tmp_name_value_1 = mod_consts[6]; n 860         tmp_name_value_1 = mod_consts[5];
860         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 861         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
861         tmp_locals_arg_value_1 = Py_None; 862         tmp_locals_arg_value_1 = Py_None;
862         tmp_fromlist_value_1 = Py_None; 863         tmp_fromlist_value_1 = Py_None;
863         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 4; 864         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 4;
864         tmp_assign_source_3 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1); 865         tmp_assign_source_3 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1);
870 871
871             exception_lineno = 4; 872             exception_lineno = 4;
872 873
873             goto frame_exception_exit_1; 874             goto frame_exception_exit_1;
874         } 875         }
n 875         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 876         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
876     } 877     }
877     { 878     {
878         PyObject *tmp_assign_source_4; 879         PyObject *tmp_assign_source_4;
879         tmp_assign_source_4 = Py_None; 880         tmp_assign_source_4 = Py_None;
880         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4); 881         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_4);
883         PyObject *tmp_assign_source_5; 884         PyObject *tmp_assign_source_5;
884 885
885 886
886         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 887         tmp_assign_source_5 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
887 888
n 888         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_5); n 889         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_5);
889     } 890     }
890     { 891     {
891         PyObject *tmp_assign_source_6; 892         PyObject *tmp_assign_source_6;
892         PyObject *tmp_iter_arg_1; 893         PyObject *tmp_iter_arg_1;
893         PyObject *tmp_called_instance_1; 894         PyObject *tmp_called_instance_1;
n 894         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[6]); n 895         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[5]);
895 896
896         if (unlikely(tmp_called_instance_1 == NULL)) { 897         if (unlikely(tmp_called_instance_1 == NULL)) {
n 897             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[6]); n 898             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[5]);
898         } 899         }
899 900
900         assert(!(tmp_called_instance_1 == NULL)); 901         assert(!(tmp_called_instance_1 == NULL));
901         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 26; 902         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 26;
902         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 903         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
903             tstate, 904             tstate,
904             tmp_called_instance_1, 905             tmp_called_instance_1,
n 905             mod_consts[8], n 906             mod_consts[7],
906             &PyTuple_GET_ITEM(mod_consts[9], 0) 907             &PyTuple_GET_ITEM(mod_consts[8], 0)
907         ); 908         );
908 909
909         if (tmp_iter_arg_1 == NULL) { 910         if (tmp_iter_arg_1 == NULL) {
910             assert(HAS_ERROR_OCCURRED(tstate)); 911             assert(HAS_ERROR_OCCURRED(tstate));
911 912
961     } 962     }
962     { 963     {
963         PyObject *tmp_assign_source_8; 964         PyObject *tmp_assign_source_8;
964         CHECK_OBJECT(tmp_for_loop_1__iter_value); 965         CHECK_OBJECT(tmp_for_loop_1__iter_value);
965         tmp_assign_source_8 = tmp_for_loop_1__iter_value; 966         tmp_assign_source_8 = tmp_for_loop_1__iter_value;
n 966         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_8); n 967         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_8);
967     } 968     }
968     { 969     {
969         PyObject *tmp_called_value_1; 970         PyObject *tmp_called_value_1;
970         PyObject *tmp_call_result_1; 971         PyObject *tmp_call_result_1;
971         PyObject *tmp_args_element_value_1; 972         PyObject *tmp_args_element_value_1;
n 972         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[7]); n 973         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[6]);
973 974
974         if (unlikely(tmp_called_value_1 == NULL)) { 975         if (unlikely(tmp_called_value_1 == NULL)) {
n 975             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[7]); n 976             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[6]);
976         } 977         }
977 978
978         if (tmp_called_value_1 == NULL) { 979         if (tmp_called_value_1 == NULL) {
979             assert(HAS_ERROR_OCCURRED(tstate)); 980             assert(HAS_ERROR_OCCURRED(tstate));
980 981
983 984
984             exception_lineno = 27; 985             exception_lineno = 27;
985 986
986             goto try_except_handler_1; 987             goto try_except_handler_1;
987         } 988         }
n 988         tmp_args_element_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[2]); n 989         tmp_args_element_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[9]);
989 990
990         if (unlikely(tmp_args_element_value_1 == NULL)) { 991         if (unlikely(tmp_args_element_value_1 == NULL)) {
t 991             tmp_args_element_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[2]); t 992             tmp_args_element_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[9]);
992         } 993         }
993 994
994         assert(!(tmp_args_element_value_1 == NULL)); 995         assert(!(tmp_args_element_value_1 == NULL));
995         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 27; 996         frame_aa5f5f901fb53b8c50b9df95f8c03013->m_frame.f_lineno = 27;
996         tmp_call_result_1 = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, tmp_called_value_1, tmp_args_element_value_1); 997         tmp_call_result_1 = CALL_FUNCTION_WITH_SINGLE_ARG(tstate, tmp_called_value_1, tmp_args_element_value_1);