Construct FunctionRaise

Performance Diagrams

Construct FunctionRaise 0040000000400000008000000080000000120000000120000000160000000160000000200000000200000000240000000240000000280000000280000000320000000320000000360000000360000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)37437714988.11538461538461257.0CPython 2.7157397682240.03846153846155400.2217873995994Nuitka (master)157398871391.96153846153845400.2210025755441Nuitka (develop)157499306543.8846153846154400.15470837537686Nuitka (factory)Construct FunctionRaiseTicks Construct FunctionRaise 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)17213942688.11538461538461257.00000000000006CPython 3.592723752240.03846153846155371.0054622059679Nuitka (master)92373699391.96153846153845371.5079820745468Nuitka (develop)92373438543.8846153846154371.5083567540545Nuitka (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_31717dff84bbdf7112e2e56457ccfb0f; 61 static PyCodeObject *codeobj_31717dff84bbdf7112e2e56457ccfb0f;
n 62 static PyCodeObject *codeobj_859c6f1fc162830c5b7a50eb5e1d1660; n 62 static PyCodeObject *codeobj_28d49d77bffa138e814c51b905b47f83;
63 static PyCodeObject *codeobj_50472fa257886ce3e74552c314eb67c4; 63 static PyCodeObject *codeobj_50472fa257886ce3e74552c314eb67c4;
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_31717dff84bbdf7112e2e56457ccfb0f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[17], mod_consts[18], 0, 0, 0); 69     codeobj_31717dff84bbdf7112e2e56457ccfb0f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[16], mod_consts[17], 0, 0, 0);
70     codeobj_859c6f1fc162830c5b7a50eb5e1d1660 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[9], mod_consts[18], 0, 0, 0); 70     codeobj_28d49d77bffa138e814c51b905b47f83 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_NOFREE, mod_consts[9], mod_consts[17], 0, 0, 0);
71     codeobj_50472fa257886ce3e74552c314eb67c4 = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], mod_consts[18], 0, 0, 0); 71     codeobj_50472fa257886ce3e74552c314eb67c4 = 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
235     return NULL; 235     return NULL;
236 236
237 } 237 }
238 238
239 239
n 240 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
241     // Preserve error status for checks
242 #ifndef __NUITKA_NO_ASSERT__
243     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
244 #endif
245  
246     // Local variable declarations.
247     struct Nuitka_FrameObject *frame_859c6f1fc162830c5b7a50eb5e1d1660;
248     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
249     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
250     PyObject *exception_type = NULL;
251     PyObject *exception_value = NULL;
252     PyTracebackObject *exception_tb = NULL;
253     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
254     PyObject *exception_keeper_type_1;
255     PyObject *exception_keeper_value_1;
256     PyTracebackObject *exception_keeper_tb_1;
257     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
258     PyObject *exception_preserved_type_1;
259     PyObject *exception_preserved_value_1;
260     PyTracebackObject *exception_preserved_tb_1;
261     int tmp_res;
262     bool tmp_result;
263     PyObject *exception_keeper_type_2;
264     PyObject *exception_keeper_value_2;
265     PyTracebackObject *exception_keeper_tb_2;
266     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
267     static struct Nuitka_FrameObject *cache_frame_859c6f1fc162830c5b7a50eb5e1d1660 = NULL;
268     PyObject *tmp_return_value = NULL;
269  
270     // Actual function body.
271     if (isFrameUnusable(cache_frame_859c6f1fc162830c5b7a50eb5e1d1660)) {
272         Py_XDECREF(cache_frame_859c6f1fc162830c5b7a50eb5e1d1660);
273  
274 #if _DEBUG_REFCOUNTS
275         if (cache_frame_859c6f1fc162830c5b7a50eb5e1d1660 == NULL) {
276             count_active_frame_cache_instances += 1;
277         } else {
278             count_released_frame_cache_instances += 1;
279         }
280         count_allocated_frame_cache_instances += 1;
281 #endif
282         cache_frame_859c6f1fc162830c5b7a50eb5e1d1660 = MAKE_FUNCTION_FRAME(codeobj_859c6f1fc162830c5b7a50eb5e1d1660, module___main__, 0);
283 #if _DEBUG_REFCOUNTS
284     } else {
285         count_hit_frame_cache_instances += 1;
286 #endif
287     }
288     assert(cache_frame_859c6f1fc162830c5b7a50eb5e1d1660->m_type_description == NULL);
289     frame_859c6f1fc162830c5b7a50eb5e1d1660 = cache_frame_859c6f1fc162830c5b7a50eb5e1d1660;
290  
291     // Push the new frame as the currently active one.
292     pushFrameStack(frame_859c6f1fc162830c5b7a50eb5e1d1660);
293  
294     // Mark the frame object as in use, ref count 1 will be up for reuse.
295     assert(Py_REFCNT(frame_859c6f1fc162830c5b7a50eb5e1d1660) == 2); // Frame stack
296  
297     // Framed code:
298     // Tried code:
299     {
300         PyObject *tmp_called_name_1;
301         PyObject *tmp_mvar_value_1;
302         PyObject *tmp_call_result_1;
303         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[2]);
304  
305         if (unlikely(tmp_mvar_value_1 == NULL)) {
306             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)mod_consts[2]);
307         }
308  
309         if (unlikely(tmp_mvar_value_1 == NULL)) {
310  
311             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[2]);
312             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
313             CHAIN_EXCEPTION(exception_value);
314  
315             exception_lineno = 34;
316  
317             goto try_except_handler_1;
318         }
319  
320         tmp_called_name_1 = tmp_mvar_value_1;
321         frame_859c6f1fc162830c5b7a50eb5e1d1660->m_frame.f_lineno = 34;
322         tmp_call_result_1 = CALL_FUNCTION_NO_ARGS(tmp_called_name_1);
323         if (tmp_call_result_1 == NULL) {
324             assert(ERROR_OCCURRED());
325  
326             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
327  
328  
329             exception_lineno = 34;
330  
331             goto try_except_handler_1;
332         }
333         Py_DECREF(tmp_call_result_1);
334     }
335     goto try_end_1;
336     // Exception handler code:
337     try_except_handler_1:;
338     exception_keeper_type_1 = exception_type;
339     exception_keeper_value_1 = exception_value;
340     exception_keeper_tb_1 = exception_tb;
341     exception_keeper_lineno_1 = exception_lineno;
342     exception_type = NULL;
343     exception_value = NULL;
344     exception_tb = NULL;
345     exception_lineno = 0;
346  
347     // Preserve existing published exception.
348     exception_preserved_type_1 = EXC_TYPE(PyThreadState_GET());
349     Py_XINCREF(exception_preserved_type_1);
350     exception_preserved_value_1 = EXC_VALUE(PyThreadState_GET());
351     Py_XINCREF(exception_preserved_value_1);
352     exception_preserved_tb_1 = (PyTracebackObject *)EXC_TRACEBACK(PyThreadState_GET());
353     Py_XINCREF(exception_preserved_tb_1);
354  
355     if (exception_keeper_tb_1 == NULL) {
356         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_859c6f1fc162830c5b7a50eb5e1d1660, exception_keeper_lineno_1);
357     } else if (exception_keeper_lineno_1 != 0) {
358         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_859c6f1fc162830c5b7a50eb5e1d1660, exception_keeper_lineno_1);
359     }
360  
361     NORMALIZE_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
362     ATTACH_TRACEBACK_TO_EXCEPTION_VALUE(exception_keeper_value_1, exception_keeper_tb_1);
363     PUBLISH_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
364     // Tried code:
365     {
366         nuitka_bool tmp_condition_result_1;
367         PyObject *tmp_compexpr_left_1;
368         PyObject *tmp_compexpr_right_1;
369         tmp_compexpr_left_1 = EXC_TYPE(PyThreadState_GET());
370         tmp_compexpr_right_1 = PyExc_TypeError;
371         tmp_res = EXCEPTION_MATCH_BOOL(tmp_compexpr_left_1, tmp_compexpr_right_1);
372         if (tmp_res == -1) {
373             assert(ERROR_OCCURRED());
374  
375             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
376  
377  
378             exception_lineno = 35;
379  
380             goto try_except_handler_2;
381         }
382         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
383         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
384             goto branch_yes_1;
385         } else {
386             goto branch_no_1;
387         }
388     }
389     branch_yes_1:;
390     tmp_result = RERAISE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
391     if (unlikely(tmp_result == false)) {
392         exception_lineno = 33;
393     }
394  
395     if (exception_tb && exception_tb->tb_frame == &frame_859c6f1fc162830c5b7a50eb5e1d1660->m_frame) frame_859c6f1fc162830c5b7a50eb5e1d1660->m_frame.f_lineno = exception_tb->tb_lineno;
396  
397     goto try_except_handler_2;
398     branch_no_1:;
399     goto try_end_2;
400     // Exception handler code:
401     try_except_handler_2:;
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     // Restore previous exception.
412     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
413     // Re-raise.
414     exception_type = exception_keeper_type_2;
415     exception_value = exception_keeper_value_2;
416     exception_tb = exception_keeper_tb_2;
417     exception_lineno = exception_keeper_lineno_2;
418  
419     goto frame_exception_exit_1;
420     // End of try:
421     try_end_2:;
422     // Restore previous exception.
423     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
424     goto try_end_1;
425     NUITKA_CANNOT_GET_HERE("exception handler codes exits in all cases");
426     return NULL;
427     // End of try:
428     try_end_1:;
429  
430 #if 0
431     RESTORE_FRAME_EXCEPTION(frame_859c6f1fc162830c5b7a50eb5e1d1660);
432 #endif
433  
434     // Put the previous frame back on top.
435     popFrameStack();
436  
437     goto frame_no_exception_1;
438  
439     frame_exception_exit_1:;
440  
441 #if 0
442     RESTORE_FRAME_EXCEPTION(frame_859c6f1fc162830c5b7a50eb5e1d1660);
443 #endif
444  
445     if (exception_tb == NULL) {
446         exception_tb = MAKE_TRACEBACK(frame_859c6f1fc162830c5b7a50eb5e1d1660, exception_lineno);
447     } else if (exception_tb->tb_frame != &frame_859c6f1fc162830c5b7a50eb5e1d1660->m_frame) {
448         exception_tb = ADD_TRACEBACK(exception_tb, frame_859c6f1fc162830c5b7a50eb5e1d1660, exception_lineno);
449     }
450  
451     // Attachs locals to frame if any.
452     Nuitka_Frame_AttachLocals(
453         frame_859c6f1fc162830c5b7a50eb5e1d1660,
454         type_description_1
455     );
456  
457  
458     // Release cached frame.
459     if (frame_859c6f1fc162830c5b7a50eb5e1d1660 == cache_frame_859c6f1fc162830c5b7a50eb5e1d1660) {
460 #if _DEBUG_REFCOUNTS
461         count_active_frame_cache_instances -= 1;
462         count_released_frame_cache_instances += 1;
463 #endif
464  
465         Py_DECREF(frame_859c6f1fc162830c5b7a50eb5e1d1660);
466     }
467     cache_frame_859c6f1fc162830c5b7a50eb5e1d1660 = NULL;
468  
469     assertFrameObject(frame_859c6f1fc162830c5b7a50eb5e1d1660);
470  
471     // Put the previous frame back on top.
472     popFrameStack();
473  
474     // Return the error.
475     goto function_exception_exit;
476  
477     frame_no_exception_1:;
478     tmp_return_value = Py_None;
479     Py_INCREF(tmp_return_value);
480     goto function_return_exit;
481  
482     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
483     return NULL;
484  
485 function_exception_exit:
486     assert(exception_type);
487     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
488  
489     return NULL;
490  
491 function_return_exit:
492    // Function cleanup code if any.
493  
494  
495    // Actual function exit with return value, making sure we did not make
496    // the error status worse despite non-NULL return.
497    CHECK_OBJECT(tmp_return_value);
498    assert(had_error || !ERROR_OCCURRED());
499    return tmp_return_value;
500 }
501  
502  
503 240
504 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() { 241 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() {
505     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 242     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
506         impl___main__$$$function_1_raisy, 243         impl___main__$$$function_1_raisy,
n 507         mod_consts[2], n 244         mod_consts[8],
508 #if PYTHON_VERSION >= 300 245 #if PYTHON_VERSION >= 300
509         NULL, 246         NULL,
510 #endif 247 #endif
511         codeobj_50472fa257886ce3e74552c314eb67c4, 248         codeobj_50472fa257886ce3e74552c314eb67c4,
512         NULL, 249         NULL,
525 262
526 263
527 264
528 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 265 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
529     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 266     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 530         impl___main__$$$function_2_calledRepeatedly, n 267         NULL,
531         mod_consts[9], 268         mod_consts[9],
532 #if PYTHON_VERSION >= 300 269 #if PYTHON_VERSION >= 300
533         NULL, 270         NULL,
534 #endif 271 #endif
n 535         codeobj_859c6f1fc162830c5b7a50eb5e1d1660, n 272         codeobj_28d49d77bffa138e814c51b905b47f83,
536         NULL, 273         NULL,
537 #if PYTHON_VERSION >= 300 274 #if PYTHON_VERSION >= 300
538         NULL, 275         NULL,
539         NULL, 276         NULL,
540 #endif 277 #endif
560 // Provide a way to create find a function via its C code and create it back 297 // Provide a way to create find a function via its C code and create it back
561 // in another process, useful for multiprocessing extensions like dill 298 // in another process, useful for multiprocessing extensions like dill
562 299
563 function_impl_code functable___main__[] = { 300 function_impl_code functable___main__[] = {
564     impl___main__$$$function_1_raisy, 301     impl___main__$$$function_1_raisy,
n 565     impl___main__$$$function_2_calledRepeatedly, n 302     NULL,
566     NULL 303     NULL
567 }; 304 };
568 305
569 static char const *_reduce_compiled_function_argnames[] = { 306 static char const *_reduce_compiled_function_argnames[] = {
570     "func", 307     "func",
929 666
930     // Module code. 667     // Module code.
931     { 668     {
932         PyObject *tmp_assign_source_1; 669         PyObject *tmp_assign_source_1;
933         tmp_assign_source_1 = Py_None; 670         tmp_assign_source_1 = Py_None;
n 934         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1); n 671         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_1);
935     } 672     }
936     { 673     {
937         PyObject *tmp_assign_source_2; 674         PyObject *tmp_assign_source_2;
n 938         tmp_assign_source_2 = mod_consts[4]; n 675         tmp_assign_source_2 = mod_consts[3];
939         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2); 676         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_2);
940     } 677     }
941     { 678     {
942         PyObject *tmp_assign_source_3; 679         PyObject *tmp_assign_source_3;
943         tmp_assign_source_3 = Py_None; 680         tmp_assign_source_3 = Py_None;
n 944         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3); n 681         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_3);
945     } 682     }
946     // Frame without reuse. 683     // Frame without reuse.
947     frame_31717dff84bbdf7112e2e56457ccfb0f = MAKE_MODULE_FRAME(codeobj_31717dff84bbdf7112e2e56457ccfb0f, module___main__); 684     frame_31717dff84bbdf7112e2e56457ccfb0f = MAKE_MODULE_FRAME(codeobj_31717dff84bbdf7112e2e56457ccfb0f, module___main__);
948 685
949     // Push the new frame as the currently active one, and we should be exclusively 686     // Push the new frame as the currently active one, and we should be exclusively
960         assert(!(tmp_import_name_from_1 == NULL)); 697         assert(!(tmp_import_name_from_1 == NULL));
961         if (PyModule_Check(tmp_import_name_from_1)) { 698         if (PyModule_Check(tmp_import_name_from_1)) {
962             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE( 699             tmp_assign_source_4 = IMPORT_NAME_OR_MODULE(
963                 tmp_import_name_from_1, 700                 tmp_import_name_from_1,
964                 (PyObject *)moduledict___main__, 701                 (PyObject *)moduledict___main__,
n n 702                 mod_consts[6],
965                 mod_consts[7], 703                 mod_consts[7]
966                 mod_consts[8]
967             ); 704             );
968         } else { 705         } else {
n 969             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[7]); n 706             tmp_assign_source_4 = IMPORT_NAME(tmp_import_name_from_1, mod_consts[6]);
970         } 707         }
971 708
972         if (tmp_assign_source_4 == NULL) { 709         if (tmp_assign_source_4 == NULL) {
973             assert(ERROR_OCCURRED()); 710             assert(ERROR_OCCURRED());
974 711
977 714
978             exception_lineno = 21; 715             exception_lineno = 21;
979 716
980             goto frame_exception_exit_1; 717             goto frame_exception_exit_1;
981         } 718         }
n 982         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4); n 719         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_4);
983     } 720     }
984     { 721     {
985         PyObject *tmp_assign_source_5; 722         PyObject *tmp_assign_source_5;
n 986         tmp_assign_source_5 = mod_consts[8]; n 723         tmp_assign_source_5 = mod_consts[7];
987         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 724         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
988     } 725     }
989     { 726     {
990         PyObject *tmp_assign_source_6; 727         PyObject *tmp_assign_source_6;
991 728
992 729
993         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_1_raisy(); 730         tmp_assign_source_6 = MAKE_FUNCTION___main__$$$function_1_raisy();
994 731
n 995         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[2], tmp_assign_source_6); n 732         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_6);
996     } 733     }
997     { 734     {
998         PyObject *tmp_assign_source_7; 735         PyObject *tmp_assign_source_7;
999 736
1000 737
1011         PyObject *tmp_level_name_1; 748         PyObject *tmp_level_name_1;
1012         tmp_name_name_1 = mod_consts[10]; 749         tmp_name_name_1 = mod_consts[10];
1013         tmp_globals_name_1 = (PyObject *)moduledict___main__; 750         tmp_globals_name_1 = (PyObject *)moduledict___main__;
1014         tmp_locals_name_1 = Py_None; 751         tmp_locals_name_1 = Py_None;
1015         tmp_fromlist_name_1 = Py_None; 752         tmp_fromlist_name_1 = Py_None;
n 1016         tmp_level_name_1 = mod_consts[8]; n 753         tmp_level_name_1 = mod_consts[7];
1017         frame_31717dff84bbdf7112e2e56457ccfb0f->m_frame.f_lineno = 41; 754         frame_31717dff84bbdf7112e2e56457ccfb0f->m_frame.f_lineno = 41;
1018         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); 755         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);
1019         assert(!(tmp_assign_source_8 == NULL)); 756         assert(!(tmp_assign_source_8 == NULL));
1020         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8); 757         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_8);
1021     } 758     }
1193 930
1194             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]); 931             FORMAT_NAME_ERROR(&exception_type, &exception_value, mod_consts[0]);
1195             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 932             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
1196             CHAIN_EXCEPTION(exception_value); 933             CHAIN_EXCEPTION(exception_value);
1197 934
n 1198             exception_lineno = 46; n 935             exception_lineno = 48;
1199 936
1200             goto frame_exception_exit_1; 937             goto frame_exception_exit_1;
1201         } 938         }
1202 939
1203         tmp_compexpr_left_1 = tmp_mvar_value_3; 940         tmp_compexpr_left_1 = tmp_mvar_value_3;
n 1204         tmp_compexpr_right_1 = mod_consts[14]; n 941         tmp_compexpr_right_1 = mod_consts[7];
1205         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1); 942         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1);
1206         if (tmp_operand_name_1 == NULL) { 943         if (tmp_operand_name_1 == NULL) {
1207             assert(ERROR_OCCURRED()); 944             assert(ERROR_OCCURRED());
1208 945
1209             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 946             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1210 947
1211 948
n 1212             exception_lineno = 46; n 949             exception_lineno = 48;
1213 950
1214             goto frame_exception_exit_1; 951             goto frame_exception_exit_1;
1215         } 952         }
1216         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 953         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1217         Py_DECREF(tmp_operand_name_1); 954         Py_DECREF(tmp_operand_name_1);
1219             assert(ERROR_OCCURRED()); 956             assert(ERROR_OCCURRED());
1220 957
1221             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 958             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1222 959
1223 960
n 1224             exception_lineno = 46; n 961             exception_lineno = 48;
1225 962
1226             goto frame_exception_exit_1; 963             goto frame_exception_exit_1;
1227         } 964         }
1228         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 965         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1229         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) { 966         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
1236     { 973     {
1237         PyObject *tmp_raise_type_1; 974         PyObject *tmp_raise_type_1;
1238         tmp_raise_type_1 = PyExc_AssertionError; 975         tmp_raise_type_1 = PyExc_AssertionError;
1239         exception_type = tmp_raise_type_1; 976         exception_type = tmp_raise_type_1;
1240         Py_INCREF(tmp_raise_type_1); 977         Py_INCREF(tmp_raise_type_1);
n 1241         exception_lineno = 46; n 978         exception_lineno = 48;
1242         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb); 979         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb);
1243 980
1244         goto frame_exception_exit_1; 981         goto frame_exception_exit_1;
1245     } 982     }
1246     branch_no_1:; 983     branch_no_1:;
1247     { 984     {
1248         PyObject *tmp_called_name_2; 985         PyObject *tmp_called_name_2;
1249         PyObject *tmp_call_result_2; 986         PyObject *tmp_call_result_2;
n 1250         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[15]); n 987         tmp_called_name_2 = LOOKUP_BUILTIN(mod_consts[14]);
1251         assert(tmp_called_name_2 != NULL); 988         assert(tmp_called_name_2 != NULL);
1252         frame_31717dff84bbdf7112e2e56457ccfb0f->m_frame.f_lineno = 50; 989         frame_31717dff84bbdf7112e2e56457ccfb0f->m_frame.f_lineno = 50;
t 1253         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[16]); t 990         tmp_call_result_2 = CALL_FUNCTION_WITH_SINGLE_ARG(tmp_called_name_2, mod_consts[15]);
1254         if (tmp_call_result_2 == NULL) { 991         if (tmp_call_result_2 == NULL) {
1255             assert(ERROR_OCCURRED()); 992             assert(ERROR_OCCURRED());
1256 993
1257             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 994             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1258 995