Construct FunctionRaise

Performance Diagrams

Construct FunctionRaise 0040000000400000008000000080000000120000000120000000160000000160000000200000000200000000240000000240000000280000000280000000320000000320000000360000000360000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)37437704988.11538461538461257.0CPython 2.7157499938240.03846153846155400.1542634416098Nuitka (master)158249936391.96153846153845399.65921160890315Nuitka (develop)158249936543.8846153846154399.65921160890315Nuitka (factory)Construct FunctionRaiseTicks Construct FunctionRaise 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)17213940088.11538461538461257.0CPython 3.592373321240.03846153846155371.5085046848435Nuitka (master)93527637391.96153846153845369.8514218652933Nuitka (develop)93527637543.8846153846154369.8514218652933Nuitka (factory)Construct FunctionRaiseTicks

Source Code with Construct

from __future__ import print_function

count = 0

def raisy():
    global count
    count += 1

    raise TypeError

def calledRepeatedly():
# construct_begin
    try:
        raisy()
    except TypeError:
        pass
# construct_alternative



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

# construct_begin
assert count == 50000
# construct_alternative


print("OK.")

Source Code without Construct

from __future__ import print_function

count = 0

def raisy():
    global count
    count += 1

    raise TypeError

def calledRepeatedly():
# construct_begin




# construct_alternative
    pass
# construct_end

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

# construct_begin

# construct_alternative
assert count == 0
# construct_end
print("OK.")

Context Diff of Source Code


Construct
Baseline
28 28
29     raise TypeError 29     raise TypeError
30 30
31 def calledRepeatedly(): 31 def calledRepeatedly():
32 # construct_begin 32 # construct_begin
n 33     try: n
34         raisy()
35     except TypeError:
36         pass
37 # construct_alternative
38 33
39 34
n n 35  
36  
37 # construct_alternative
38     pass
39 # construct_end
40 40
41 import itertools 41 import itertools
42 for x in itertools.repeat(None, 50000): 42 for x in itertools.repeat(None, 50000):
43     calledRepeatedly() 43     calledRepeatedly()
44 44
45 # construct_begin 45 # construct_begin
n 46 assert count == 50000 n 46  
47 # construct_alternative 47 # construct_alternative
t 48   t 48 assert count == 0
49   49 # construct_end
50 print("OK.") 50 print("OK.")
51 51

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[19]; n 36 static PyObject *mod_consts[18];
37 37
38 static PyObject *module_filename_obj = NULL; 38 static PyObject *module_filename_obj = NULL;
39 39
40 /* Indicator if this modules private constants were created yet. */ 40 /* Indicator if this modules private constants were created yet. */
41 static bool constants_created = false; 41 static bool constants_created = false;
42 42
43 /* Function to create module private constants. */ 43 /* Function to create module private constants. */
44 static void createModuleConstants(void) { 44 static void createModuleConstants(void) {
n 45     loadConstantsBlob(&mod_consts[0], "__main__", 19); n 45     loadConstantsBlob(&mod_consts[0], "__main__", 18);
46 46
47     constants_created = true; 47     constants_created = true;
48 } 48 }
49 49
50 /* Function to verify module private constants for non-corruption. */ 50 /* Function to verify module private constants for non-corruption. */
51 #ifndef __NUITKA_NO_ASSERT__ 51 #ifndef __NUITKA_NO_ASSERT__
52 void checkModuleConstants___main__(void) { 52 void checkModuleConstants___main__(void) {
53     // The module may not have been used at all, then ignore this. 53     // The module may not have been used at all, then ignore this.
54     if (constants_created == false) return; 54     if (constants_created == false) return;
55 55
n 56     checkConstantsBlob(&mod_consts[0], "__main__", 19); n 56     checkConstantsBlob(&mod_consts[0], "__main__", 18);
57 } 57 }
58 #endif 58 #endif
59 59
60 // The module code objects. 60 // The module code objects.
61 static PyCodeObject *codeobj_a07e915dbc571c0f29f51d5b94502a24; 61 static PyCodeObject *codeobj_a07e915dbc571c0f29f51d5b94502a24;
n 62 static PyCodeObject *codeobj_c81b321d8869a67551d58b8eb7de87e8; n 62 static PyCodeObject *codeobj_6e0263c8166e6b5105892592c1d592f3;
63 static PyCodeObject *codeobj_34b76efa6ab9d2afb830a14c63097f23; 63 static PyCodeObject *codeobj_34b76efa6ab9d2afb830a14c63097f23;
64 /* For use in "MainProgram.c". */ 64 /* For use in "MainProgram.c". */
65 PyCodeObject *codeobj_main = NULL; 65 PyCodeObject *codeobj_main = NULL;
66 66
67 static void createModuleCodeObjects(void) { 67 static void createModuleCodeObjects(void) {
n 68     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj); n 68     module_filename_obj = mod_consts[3]; CHECK_OBJECT(module_filename_obj);
69     codeobj_a07e915dbc571c0f29f51d5b94502a24 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[17], mod_consts[18], 0, 0, 0); 69     codeobj_a07e915dbc571c0f29f51d5b94502a24 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], mod_consts[17], 0, 0, 0);
70     codeobj_c81b321d8869a67551d58b8eb7de87e8 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[18], 0, 0, 0); 70     codeobj_6e0263c8166e6b5105892592c1d592f3 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_NOFREE, mod_consts[9], mod_consts[17], 0, 0, 0);
71     codeobj_34b76efa6ab9d2afb830a14c63097f23 = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], mod_consts[18], 0, 0, 0); 71     codeobj_34b76efa6ab9d2afb830a14c63097f23 = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[8], mod_consts[17], 0, 0, 0);
72 } 72 }
73 73
74 // The module function declarations. 74 // The module function declarations.
75 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy(); 75 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy();
76 76
227     return NULL; 227     return NULL;
228 228
229 } 229 }
230 230
231 231
n 232 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
233     // Preserve error status for checks
234 #ifndef __NUITKA_NO_ASSERT__
235     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
236 #endif
237  
238     // Local variable declarations.
239     struct Nuitka_FrameObject *frame_c81b321d8869a67551d58b8eb7de87e8;
240     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
241     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
242     PyObject *exception_type = NULL;
243     PyObject *exception_value = NULL;
244     PyTracebackObject *exception_tb = NULL;
245     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
246     PyObject *exception_keeper_type_1;
247     PyObject *exception_keeper_value_1;
248     PyTracebackObject *exception_keeper_tb_1;
249     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
250     PyObject *exception_preserved_type_1;
251     PyObject *exception_preserved_value_1;
252     PyTracebackObject *exception_preserved_tb_1;
253     int tmp_res;
254     bool tmp_result;
255     PyObject *exception_keeper_type_2;
256     PyObject *exception_keeper_value_2;
257     PyTracebackObject *exception_keeper_tb_2;
258     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
259     static struct Nuitka_FrameObject *cache_frame_c81b321d8869a67551d58b8eb7de87e8 = NULL;
260     PyObject *tmp_return_value = NULL;
261  
262     // Actual function body.
263     if (isFrameUnusable(cache_frame_c81b321d8869a67551d58b8eb7de87e8)) {
264         Py_XDECREF(cache_frame_c81b321d8869a67551d58b8eb7de87e8);
265  
266 #if _DEBUG_REFCOUNTS
267         if (cache_frame_c81b321d8869a67551d58b8eb7de87e8 == NULL) {
268             count_active_frame_cache_instances += 1;
269         } else {
270             count_released_frame_cache_instances += 1;
271         }
272         count_allocated_frame_cache_instances += 1;
273 #endif
274         cache_frame_c81b321d8869a67551d58b8eb7de87e8 = MAKE_FUNCTION_FRAME(codeobj_c81b321d8869a67551d58b8eb7de87e8, module___main__, 0);
275 #if _DEBUG_REFCOUNTS
276     } else {
277         count_hit_frame_cache_instances += 1;
278 #endif
279     }
280     assert(cache_frame_c81b321d8869a67551d58b8eb7de87e8->m_type_description == NULL);
281     frame_c81b321d8869a67551d58b8eb7de87e8 = cache_frame_c81b321d8869a67551d58b8eb7de87e8;
282  
283     // Push the new frame as the currently active one.
284     pushFrameStack(frame_c81b321d8869a67551d58b8eb7de87e8);
285  
286     // Mark the frame object as in use, ref count 1 will be up for reuse.
287     assert(Py_REFCNT(frame_c81b321d8869a67551d58b8eb7de87e8) == 2); // Frame stack
288  
289     // Framed code:
290     // Tried code:
291     {
292         PyObject *tmp_called_name_1;
293         PyObject *tmp_call_result_1;
294         tmp_called_name_1 = GET_MODULE_VARIABLE_VALUE(moduledict___main__, mod_consts[2]);
295         if (tmp_called_name_1 == NULL) {
296             assert(ERROR_OCCURRED());
297  
298             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
299  
300  
301             exception_lineno = 34;
302  
303             goto try_except_handler_1;
304         }
305         frame_c81b321d8869a67551d58b8eb7de87e8->m_frame.f_lineno = 34;
306         tmp_call_result_1 = CALL_FUNCTION_NO_ARGS(tmp_called_name_1);
307         if (tmp_call_result_1 == NULL) {
308             assert(ERROR_OCCURRED());
309  
310             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
311  
312  
313             exception_lineno = 34;
314  
315             goto try_except_handler_1;
316         }
317         Py_DECREF(tmp_call_result_1);
318     }
319     goto try_end_1;
320     // Exception handler code:
321     try_except_handler_1:;
322     exception_keeper_type_1 = exception_type;
323     exception_keeper_value_1 = exception_value;
324     exception_keeper_tb_1 = exception_tb;
325     exception_keeper_lineno_1 = exception_lineno;
326     exception_type = NULL;
327     exception_value = NULL;
328     exception_tb = NULL;
329     exception_lineno = 0;
330  
331     // Preserve existing published exception.
332     exception_preserved_type_1 = EXC_TYPE(PyThreadState_GET());
333     Py_XINCREF(exception_preserved_type_1);
334     exception_preserved_value_1 = EXC_VALUE(PyThreadState_GET());
335     Py_XINCREF(exception_preserved_value_1);
336     exception_preserved_tb_1 = (PyTracebackObject *)EXC_TRACEBACK(PyThreadState_GET());
337     Py_XINCREF(exception_preserved_tb_1);
338  
339     if (exception_keeper_tb_1 == NULL) {
340         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_c81b321d8869a67551d58b8eb7de87e8, exception_keeper_lineno_1);
341     } else if (exception_keeper_lineno_1 != 0) {
342         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_c81b321d8869a67551d58b8eb7de87e8, exception_keeper_lineno_1);
343     }
344  
345     NORMALIZE_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
346     ATTACH_TRACEBACK_TO_EXCEPTION_VALUE(exception_keeper_value_1, exception_keeper_tb_1);
347     PUBLISH_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
348     // Tried code:
349     {
350         nuitka_bool tmp_condition_result_1;
351         PyObject *tmp_compexpr_left_1;
352         PyObject *tmp_compexpr_right_1;
353         tmp_compexpr_left_1 = EXC_TYPE(PyThreadState_GET());
354         tmp_compexpr_right_1 = PyExc_TypeError;
355         tmp_res = EXCEPTION_MATCH_BOOL(tmp_compexpr_left_1, tmp_compexpr_right_1);
356         assert(!(tmp_res == -1));
357         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
358         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
359             goto branch_yes_1;
360         } else {
361             goto branch_no_1;
362         }
363     }
364     branch_yes_1:;
365     tmp_result = RERAISE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
366     if (unlikely(tmp_result == false)) {
367         exception_lineno = 33;
368     }
369  
370     if (exception_tb && exception_tb->tb_frame == &frame_c81b321d8869a67551d58b8eb7de87e8->m_frame) frame_c81b321d8869a67551d58b8eb7de87e8->m_frame.f_lineno = exception_tb->tb_lineno;
371  
372     goto try_except_handler_2;
373     branch_no_1:;
374     goto try_end_2;
375     // Exception handler code:
376     try_except_handler_2:;
377     exception_keeper_type_2 = exception_type;
378     exception_keeper_value_2 = exception_value;
379     exception_keeper_tb_2 = exception_tb;
380     exception_keeper_lineno_2 = exception_lineno;
381     exception_type = NULL;
382     exception_value = NULL;
383     exception_tb = NULL;
384     exception_lineno = 0;
385  
386     // Restore previous exception.
387     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
388     // Re-raise.
389     exception_type = exception_keeper_type_2;
390     exception_value = exception_keeper_value_2;
391     exception_tb = exception_keeper_tb_2;
392     exception_lineno = exception_keeper_lineno_2;
393  
394     goto frame_exception_exit_1;
395     // End of try:
396     try_end_2:;
397     // Restore previous exception.
398     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
399     goto try_end_1;
400     NUITKA_CANNOT_GET_HERE("exception handler codes exits in all cases");
401     return NULL;
402     // End of try:
403     try_end_1:;
404  
405 #if 0
406     RESTORE_FRAME_EXCEPTION(frame_c81b321d8869a67551d58b8eb7de87e8);
407 #endif
408  
409     // Put the previous frame back on top.
410     popFrameStack();
411  
412     goto frame_no_exception_1;
413  
414     frame_exception_exit_1:;
415  
416 #if 0
417     RESTORE_FRAME_EXCEPTION(frame_c81b321d8869a67551d58b8eb7de87e8);
418 #endif
419  
420     if (exception_tb == NULL) {
421         exception_tb = MAKE_TRACEBACK(frame_c81b321d8869a67551d58b8eb7de87e8, exception_lineno);
422     } else if (exception_tb->tb_frame != &frame_c81b321d8869a67551d58b8eb7de87e8->m_frame) {
423         exception_tb = ADD_TRACEBACK(exception_tb, frame_c81b321d8869a67551d58b8eb7de87e8, exception_lineno);
424     }
425  
426     // Attaches locals to frame if any.
427     Nuitka_Frame_AttachLocals(
428         frame_c81b321d8869a67551d58b8eb7de87e8,
429         type_description_1
430     );
431  
432  
433     // Release cached frame.
434     if (frame_c81b321d8869a67551d58b8eb7de87e8 == cache_frame_c81b321d8869a67551d58b8eb7de87e8) {
435 #if _DEBUG_REFCOUNTS
436         count_active_frame_cache_instances -= 1;
437         count_released_frame_cache_instances += 1;
438 #endif
439  
440         Py_DECREF(frame_c81b321d8869a67551d58b8eb7de87e8);
441     }
442     cache_frame_c81b321d8869a67551d58b8eb7de87e8 = NULL;
443  
444     assertFrameObject(frame_c81b321d8869a67551d58b8eb7de87e8);
445  
446     // Put the previous frame back on top.
447     popFrameStack();
448  
449     // Return the error.
450     goto function_exception_exit;
451  
452     frame_no_exception_1:;
453     tmp_return_value = Py_None;
454     Py_INCREF(tmp_return_value);
455     goto function_return_exit;
456  
457     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
458     return NULL;
459  
460 function_exception_exit:
461     assert(exception_type);
462     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
463  
464     return NULL;
465  
466 function_return_exit:
467    // Function cleanup code if any.
468  
469  
470    // Actual function exit with return value, making sure we did not make
471    // the error status worse despite non-NULL return.
472    CHECK_OBJECT(tmp_return_value);
473    assert(had_error || !ERROR_OCCURRED());
474    return tmp_return_value;
475 }
476  
477  
478 232
479 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() { 233 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() {
480     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 234     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
481         impl___main__$$$function_1_raisy, 235         impl___main__$$$function_1_raisy,
n 482         mod_consts[2], n 236         mod_consts[8],
483 #if PYTHON_VERSION >= 300 237 #if PYTHON_VERSION >= 300
484         NULL, 238         NULL,
485 #endif 239 #endif
486         codeobj_34b76efa6ab9d2afb830a14c63097f23, 240         codeobj_34b76efa6ab9d2afb830a14c63097f23,
487         NULL, 241         NULL,
501 255
502 256
503 257
504 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 258 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
505     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 259     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 506         impl___main__$$$function_2_calledRepeatedly, n 260         NULL,
507         mod_consts[9], 261         mod_consts[9],
508 #if PYTHON_VERSION >= 300 262 #if PYTHON_VERSION >= 300
509         NULL, 263         NULL,
510 #endif 264 #endif
n 511         codeobj_c81b321d8869a67551d58b8eb7de87e8, n 265         codeobj_6e0263c8166e6b5105892592c1d592f3,
512         NULL, 266         NULL,
513 #if PYTHON_VERSION >= 300 267 #if PYTHON_VERSION >= 300
514         NULL, 268         NULL,
515         NULL, 269         NULL,
516 #endif 270 #endif
537 // Provide a way to create find a function via its C code and create it back 291 // Provide a way to create find a function via its C code and create it back
538 // in another process, useful for multiprocessing extensions like dill 292 // in another process, useful for multiprocessing extensions like dill
539 293
540 function_impl_code functable___main__[] = { 294 function_impl_code functable___main__[] = {
541     impl___main__$$$function_1_raisy, 295     impl___main__$$$function_1_raisy,
n 542     impl___main__$$$function_2_calledRepeatedly, n 296     NULL,
543     NULL 297     NULL
544 }; 298 };
545 299
546 static char const *_reduce_compiled_function_argnames[] = { 300 static char const *_reduce_compiled_function_argnames[] = {
547     "func", 301     "func",
906 660
907     // Module code. 661     // Module code.
908     { 662     {
909         PyObject *tmp_assign_source_1; 663         PyObject *tmp_assign_source_1;
910         tmp_assign_source_1 = Py_None; 664         tmp_assign_source_1 = Py_None;
n 911         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 665         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
912     } 666     }
913     { 667     {
914         PyObject *tmp_assign_source_2; 668         PyObject *tmp_assign_source_2;
n 915         tmp_assign_source_2 = mod_consts[4]; n 669         tmp_assign_source_2 = mod_consts[3];
916         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 670         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
917     } 671     }
918     { 672     {
919         PyObject *tmp_assign_source_3; 673         PyObject *tmp_assign_source_3;
920         tmp_assign_source_3 = Py_None; 674         tmp_assign_source_3 = Py_None;
n 921         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 675         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
922     } 676     }
923     // Frame without reuse. 677     // Frame without reuse.
924     frame_a07e915dbc571c0f29f51d5b94502a24 = MAKE_MODULE_FRAME(codeobj_a07e915dbc571c0f29f51d5b94502a24, module___main__); 678     frame_a07e915dbc571c0f29f51d5b94502a24 = MAKE_MODULE_FRAME(codeobj_a07e915dbc571c0f29f51d5b94502a24, module___main__);
925 679
926     // Push the new frame as the currently active one, and we should be exclusively 680     // Push the new frame as the currently active one, and we should be exclusively
937         assert(!(tmp_import_name_from_1 == NULL)); 691         assert(!(tmp_import_name_from_1 == NULL));
938         if (PyModule_Check(tmp_import_name_from_1)) { 692         if (PyModule_Check(tmp_import_name_from_1)) {
939             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 693             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
940                 tmp_import_name_from_1, 694                 tmp_import_name_from_1,
941                 (PyObject *)moduledict___main__, 695                 (PyObject *)moduledict___main__,
n n 696                 mod_consts[6],
942                 mod_consts[7], 697                 mod_consts[7]
943                 mod_consts[8]
944             ); 698             );
945         } else { 699         } else {
n 946             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[7]); n 700             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[6]);
947         } 701         }
948 702
949         if (tmp_assign_source_4 == NULL) { 703         if (tmp_assign_source_4 == NULL) {
950             assert(ERROR_OCCURRED()); 704             assert(ERROR_OCCURRED());
951 705
954 708
955             exception_lineno = 21; 709             exception_lineno = 21;
956 710
957             goto frame_exception_exit_1; 711             goto frame_exception_exit_1;
958         } 712         }
n 959         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4); n 713         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_4);
960     } 714     }
961     { 715     {
962         PyObject *tmp_assign_source_5; 716         PyObject *tmp_assign_source_5;
n 963         tmp_assign_source_5 = mod_consts[8]; n 717         tmp_assign_source_5 = mod_consts[7];
964         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 718         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
965     } 719     }
966     { 720     {
967         PyObject *tmp_assign_source_6; 721         PyObject *tmp_assign_source_6;
968 722
969 723
970         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_1_raisy(); 724         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_1_raisy();
971 725
n 972         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_6); n 726         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_6);
973     } 727     }
974     { 728     {
975         PyObject *tmp_assign_source_7; 729         PyObject *tmp_assign_source_7;
976 730
977 731
988         PyObject *tmp_level_name_1; 742         PyObject *tmp_level_name_1;
989         tmp_name_name_1 = mod_consts[10]; 743         tmp_name_name_1 = mod_consts[10];
990         tmp_globals_name_1 = (PyObject *)moduledict___main__; 744         tmp_globals_name_1 = (PyObject *)moduledict___main__;
991         tmp_locals_name_1 = Py_None; 745         tmp_locals_name_1 = Py_None;
992         tmp_fromlist_name_1 = Py_None; 746         tmp_fromlist_name_1 = Py_None;
n 993         tmp_level_name_1 = mod_consts[8]; n 747         tmp_level_name_1 = mod_consts[7];
994         frame_a07e915dbc571c0f29f51d5b94502a24->m_frame.f_lineno = 41; 748         frame_a07e915dbc571c0f29f51d5b94502a24->m_frame.f_lineno = 41;
995         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1); 749         tmp_assign_source_8 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_name_1, tmp_locals_name_1, tmp_fromlist_name_1, tmp_level_name_1);
996         assert(!(tmp_assign_source_8 == NULL)); 750         assert(!(tmp_assign_source_8 == NULL));
997         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8); 751         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8);
998     } 752     }
1145             assert(ERROR_OCCURRED()); 899             assert(ERROR_OCCURRED());
1146 900
1147             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 901             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1148 902
1149 903
n 1150             exception_lineno = 46; n 904             exception_lineno = 48;
1151 905
1152             goto frame_exception_exit_1; 906             goto frame_exception_exit_1;
1153         } 907         }
n 1154         tmp_compexpr_right_1 = mod_consts[14]; n 908         tmp_compexpr_right_1 = mod_consts[7];
1155         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1); 909         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1);
1156         if (tmp_operand_name_1 == NULL) { 910         if (tmp_operand_name_1 == NULL) {
1157             assert(ERROR_OCCURRED()); 911             assert(ERROR_OCCURRED());
1158 912
1159             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 913             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1160 914
1161 915
n 1162             exception_lineno = 46; n 916             exception_lineno = 48;
1163 917
1164             goto frame_exception_exit_1; 918             goto frame_exception_exit_1;
1165         } 919         }
1166         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 920         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1167         Py_DECREF(tmp_operand_name_1); 921         Py_DECREF(tmp_operand_name_1);
1169             assert(ERROR_OCCURRED()); 923             assert(ERROR_OCCURRED());
1170 924
1171             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 925             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1172 926
1173 927
n 1174             exception_lineno = 46; n 928             exception_lineno = 48;
1175 929
1176             goto frame_exception_exit_1; 930             goto frame_exception_exit_1;
1177         } 931         }
1178         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 932         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1179         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) { 933         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
1186     { 940     {
1187         PyObject *tmp_raise_type_1; 941         PyObject *tmp_raise_type_1;
1188         tmp_raise_type_1 = PyExc_AssertionError; 942         tmp_raise_type_1 = PyExc_AssertionError;
1189         exception_type = tmp_raise_type_1; 943         exception_type = tmp_raise_type_1;
1190         Py_INCREF(tmp_raise_type_1); 944         Py_INCREF(tmp_raise_type_1);
n 1191         exception_lineno = 46; n 945         exception_lineno = 48;
1192         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb); 946         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb);
1193 947
1194         goto frame_exception_exit_1; 948         goto frame_exception_exit_1;
1195     } 949     }
1196     branch_no_1:; 950     branch_no_1:;
1197     { 951     {
1198         PyObject *tmp_called_name_2; 952         PyObject *tmp_called_name_2;
1199         PyObject *tmp_call_result_2; 953         PyObject *tmp_call_result_2;
n 1200         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[15]); n 954         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[14]);
1201         assert(tmp_called_name_2 != NULL); 955         assert(tmp_called_name_2 != NULL);
1202         frame_a07e915dbc571c0f29f51d5b94502a24->m_frame.f_lineno = 50; 956         frame_a07e915dbc571c0f29f51d5b94502a24->m_frame.f_lineno = 50;
t 1203         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[16]); t 957         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[15]);
1204         if (tmp_call_result_2 == NULL) { 958         if (tmp_call_result_2 == NULL) {
1205             assert(ERROR_OCCURRED()); 959             assert(ERROR_OCCURRED());
1206 960
1207             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 961             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1208 962