Construct FunctionRaise

Performance Diagrams

Construct FunctionRaise 0040000000400000008000000080000000120000000120000000160000000160000000200000000200000000240000000240000000280000000280000000320000000320000000360000000360000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)37437732788.11538461538461257.00000000000006CPython 2.7157397682240.03846153846155400.2218367964485Nuitka (master)157398871391.96153846153845400.2210519727663Nuitka (develop)157398871543.8846153846154400.2210519727663Nuitka (factory)Construct FunctionRaiseTicks Construct FunctionRaise 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)17213853388.11538461538461257.0CPython 3.592720349240.03846153846155371.00965688847475Nuitka (master)92372899391.96153846153845371.50844259838095Nuitka (develop)92373598543.8846153846154371.50743914116055Nuitka (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
43 extern PyObject *const_int_0; 43 extern PyObject *const_int_0;
44 static PyObject *const_str_angle_module; 44 static PyObject *const_str_angle_module;
45 static PyObject *const_str_plain_x; 45 static PyObject *const_str_plain_x;
46 static PyObject *const_str_plain_raisy; 46 static PyObject *const_str_plain_raisy;
47 extern PyObject *const_str_plain_print; 47 extern PyObject *const_str_plain_print;
n 48 static PyObject *const_int_pos_50000; n 48 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
49 extern PyObject *const_str_plain___doc__; 49 extern PyObject *const_str_plain___doc__;
50 extern PyObject *const_str_plain___cached__; 50 extern PyObject *const_str_plain___cached__;
n 51 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; n 51 extern PyObject *const_tuple_empty;
52 static PyObject *const_str_plain_print_function; 52 static PyObject *const_str_plain_print_function;
53 extern PyObject *const_int_pos_1; 53 extern PyObject *const_int_pos_1;
n 54 extern PyObject *const_tuple_empty; n 54 static PyObject *const_int_pos_50000;
55 static PyObject *module_filename_obj; 55 static PyObject *module_filename_obj;
56 56
57 /* Indicator if this modules private constants were created yet. */ 57 /* Indicator if this modules private constants were created yet. */
58 static bool constants_created = false; 58 static bool constants_created = false;
59 59
60 /* Function to create module private constants. */ 60 /* Function to create module private constants. */
61 static void createModuleConstants(void) { 61 static void createModuleConstants(void) {
n 62     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 92 ], 6, 1); n 62     const_str_plain_repeat = UNSTREAM_STRING_ASCII(&constant_bin[ 65 ], 6, 1);
63     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2); 63     const_tuple_none_int_pos_50000_tuple = PyTuple_New(2);
64     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None); 64     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 0, Py_None); Py_INCREF(Py_None);
65     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul); 65     const_int_pos_50000 = PyLong_FromUnsignedLong(50000ul);
66     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000); 66     PyTuple_SET_ITEM(const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000); Py_INCREF(const_int_pos_50000);
67     const_str_plain_count = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 5, 1); 67     const_str_plain_count = UNSTREAM_STRING_ASCII(&constant_bin[ 6 ], 5, 1);
n 68     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 60 ], 16, 1); n 68     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII(&constant_bin[ 33 ], 16, 1);
69     const_str_digest_299e279ec86735365d533dbd6112707b = UNSTREAM_STRING_ASCII(&constant_bin[ 98 ], 38, 0); 69     const_str_digest_299e279ec86735365d533dbd6112707b = UNSTREAM_STRING_ASCII(&constant_bin[ 71 ], 38, 0);
70     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 136 ], 9, 1); 70     const_str_plain_itertools = UNSTREAM_STRING_ASCII(&constant_bin[ 109 ], 9, 1);
71     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 145 ], 8, 0); 71     const_str_angle_module = UNSTREAM_STRING_ASCII(&constant_bin[ 118 ], 8, 0);
72     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 153 ], 1, 1); 72     const_str_plain_x = UNSTREAM_STRING_ASCII(&constant_bin[ 126 ], 1, 1);
73     const_str_plain_raisy = UNSTREAM_STRING_ASCII(&constant_bin[ 33 ], 5, 1); 73     const_str_plain_raisy = UNSTREAM_STRING_ASCII(&constant_bin[ 127 ], 5, 1);
74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 154 ], 3, 0); 74     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII(&constant_bin[ 132 ], 3, 0);
75     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 157 ], 14, 1); 75     const_str_plain_print_function = UNSTREAM_STRING_ASCII(&constant_bin[ 135 ], 14, 1);
76 76
77     constants_created = true; 77     constants_created = true;
78 } 78 }
79 79
80 /* Function to verify module private constants for non-corruption. */ 80 /* Function to verify module private constants for non-corruption. */
87 } 87 }
88 #endif 88 #endif
89 89
90 // The module code objects. 90 // The module code objects.
91 static PyCodeObject *codeobj_51bc926ad176b5e9a0f0608b9e2fb04a; 91 static PyCodeObject *codeobj_51bc926ad176b5e9a0f0608b9e2fb04a;
n 92 static PyCodeObject *codeobj_d8ee625fa40f43044df0e3c7a6698d85; n 92 static PyCodeObject *codeobj_6e97a7078f9f239912c55385cfa60008;
93 static PyCodeObject *codeobj_7c30fb45c50cf9d9330f9f29cdfcf63c; 93 static PyCodeObject *codeobj_7c30fb45c50cf9d9330f9f29cdfcf63c;
94 /* For use in "MainProgram.c". */ 94 /* For use in "MainProgram.c". */
95 PyCodeObject *codeobj_main = NULL; 95 PyCodeObject *codeobj_main = NULL;
96 96
97 static void createModuleCodeObjects(void) { 97 static void createModuleCodeObjects(void) {
98     module_filename_obj = const_str_digest_299e279ec86735365d533dbd6112707b; 98     module_filename_obj = const_str_digest_299e279ec86735365d533dbd6112707b;
99     codeobj_51bc926ad176b5e9a0f0608b9e2fb04a = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, const_str_angle_module, const_tuple_empty, 0, 0, 0); 99     codeobj_51bc926ad176b5e9a0f0608b9e2fb04a = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, const_str_angle_module, const_tuple_empty, 0, 0, 0);
n 100     codeobj_d8ee625fa40f43044df0e3c7a6698d85 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, const_str_plain_calledRepeatedly, const_tuple_empty, 0, 0, 0); n 100     codeobj_6e97a7078f9f239912c55385cfa60008 = MAKE_CODEOBJECT(module_filename_obj, 31, CO_NOFREE, const_str_plain_calledRepeatedly, const_tuple_empty, 0, 0, 0);
101     codeobj_7c30fb45c50cf9d9330f9f29cdfcf63c = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, const_str_plain_raisy, const_tuple_empty, 0, 0, 0); 101     codeobj_7c30fb45c50cf9d9330f9f29cdfcf63c = MAKE_CODEOBJECT(module_filename_obj, 25, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, const_str_plain_raisy, const_tuple_empty, 0, 0, 0);
102 } 102 }
103 103
104 // The module function declarations. 104 // The module function declarations.
105 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy(); 105 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy();
268     return NULL; 268     return NULL;
269 269
270 } 270 }
271 271
272 272
n 273 static PyObject *impl___main__$$$function_2_calledRepeatedly(struct Nuitka_FunctionObject const *self, PyObject **python_pars) { n
274     // Preserve error status for checks
275 #ifndef __NUITKA_NO_ASSERT__
276     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
277 #endif
278  
279     // Local variable declarations.
280     struct Nuitka_FrameObject *frame_d8ee625fa40f43044df0e3c7a6698d85;
281     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
282     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused;
283     PyObject *exception_type = NULL;
284     PyObject *exception_value = NULL;
285     PyTracebackObject *exception_tb = NULL;
286     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
287     PyObject *exception_keeper_type_1;
288     PyObject *exception_keeper_value_1;
289     PyTracebackObject *exception_keeper_tb_1;
290     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
291     PyObject *exception_preserved_type_1;
292     PyObject *exception_preserved_value_1;
293     PyTracebackObject *exception_preserved_tb_1;
294     int tmp_res;
295     bool tmp_result;
296     PyObject *exception_keeper_type_2;
297     PyObject *exception_keeper_value_2;
298     PyTracebackObject *exception_keeper_tb_2;
299     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_2;
300     static struct Nuitka_FrameObject *cache_frame_d8ee625fa40f43044df0e3c7a6698d85 = NULL;
301     PyObject *tmp_return_value = NULL;
302  
303     // Actual function body.
304     if (isFrameUnusable(cache_frame_d8ee625fa40f43044df0e3c7a6698d85)) {
305         Py_XDECREF(cache_frame_d8ee625fa40f43044df0e3c7a6698d85);
306  
307 #if _DEBUG_REFCOUNTS
308         if (cache_frame_d8ee625fa40f43044df0e3c7a6698d85 == NULL) {
309             count_active_frame_cache_instances += 1;
310         } else {
311             count_released_frame_cache_instances += 1;
312         }
313         count_allocated_frame_cache_instances += 1;
314 #endif
315         cache_frame_d8ee625fa40f43044df0e3c7a6698d85 = MAKE_FUNCTION_FRAME(codeobj_d8ee625fa40f43044df0e3c7a6698d85, module___main__, 0);
316 #if _DEBUG_REFCOUNTS
317     } else {
318         count_hit_frame_cache_instances += 1;
319 #endif
320     }
321     assert(cache_frame_d8ee625fa40f43044df0e3c7a6698d85->m_type_description == NULL);
322     frame_d8ee625fa40f43044df0e3c7a6698d85 = cache_frame_d8ee625fa40f43044df0e3c7a6698d85;
323  
324     // Push the new frame as the currently active one.
325     pushFrameStack(frame_d8ee625fa40f43044df0e3c7a6698d85);
326  
327     // Mark the frame object as in use, ref count 1 will be up for reuse.
328     assert(Py_REFCNT(frame_d8ee625fa40f43044df0e3c7a6698d85) == 2); // Frame stack
329  
330     // Framed code:
331     // Tried code:
332     {
333         PyObject *tmp_called_name_1;
334         PyObject *tmp_mvar_value_1;
335         PyObject *tmp_call_result_1;
336         tmp_mvar_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)const_str_plain_raisy);
337  
338         if (unlikely(tmp_mvar_value_1 == NULL)) {
339             tmp_mvar_value_1 = GET_STRING_DICT_VALUE(dict_builtin, (Nuitka_StringObject *)const_str_plain_raisy);
340         }
341  
342         if (tmp_mvar_value_1 == NULL) {
343  
344             exception_type = PyExc_NameError;
345             Py_INCREF(exception_type);
346             exception_value = UNSTREAM_STRING(&constant_bin[ 27 ], 27, 0);
347             exception_tb = NULL;
348             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
349             CHAIN_EXCEPTION(exception_value);
350  
351             exception_lineno = 34;
352  
353             goto try_except_handler_1;
354         }
355  
356         tmp_called_name_1 = tmp_mvar_value_1;
357         frame_d8ee625fa40f43044df0e3c7a6698d85->m_frame.f_lineno = 34;
358         tmp_call_result_1 = CALL_FUNCTION_NO_ARGS(tmp_called_name_1);
359         if (tmp_call_result_1 == NULL) {
360             assert(ERROR_OCCURRED());
361  
362             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
363  
364  
365             exception_lineno = 34;
366  
367             goto try_except_handler_1;
368         }
369         Py_DECREF(tmp_call_result_1);
370     }
371     goto try_end_1;
372     // Exception handler code:
373     try_except_handler_1:;
374     exception_keeper_type_1 = exception_type;
375     exception_keeper_value_1 = exception_value;
376     exception_keeper_tb_1 = exception_tb;
377     exception_keeper_lineno_1 = exception_lineno;
378     exception_type = NULL;
379     exception_value = NULL;
380     exception_tb = NULL;
381     exception_lineno = 0;
382  
383     // Preserve existing published exception.
384     exception_preserved_type_1 = EXC_TYPE(PyThreadState_GET());
385     Py_XINCREF(exception_preserved_type_1);
386     exception_preserved_value_1 = EXC_VALUE(PyThreadState_GET());
387     Py_XINCREF(exception_preserved_value_1);
388     exception_preserved_tb_1 = (PyTracebackObject *)EXC_TRACEBACK(PyThreadState_GET());
389     Py_XINCREF(exception_preserved_tb_1);
390  
391     if (exception_keeper_tb_1 == NULL) {
392         exception_keeper_tb_1 = MAKE_TRACEBACK(frame_d8ee625fa40f43044df0e3c7a6698d85, exception_keeper_lineno_1);
393     } else if (exception_keeper_lineno_1 != 0) {
394         exception_keeper_tb_1 = ADD_TRACEBACK(exception_keeper_tb_1, frame_d8ee625fa40f43044df0e3c7a6698d85, exception_keeper_lineno_1);
395     }
396  
397     NORMALIZE_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
398     ATTACH_TRACEBACK_TO_EXCEPTION_VALUE(exception_keeper_value_1, exception_keeper_tb_1);
399     PUBLISH_EXCEPTION(&exception_keeper_type_1, &exception_keeper_value_1, &exception_keeper_tb_1);
400     // Tried code:
401     {
402         nuitka_bool tmp_condition_result_1;
403         PyObject *tmp_compexpr_left_1;
404         PyObject *tmp_compexpr_right_1;
405         tmp_compexpr_left_1 = EXC_TYPE(PyThreadState_GET());
406         tmp_compexpr_right_1 = PyExc_TypeError;
407         tmp_res = EXCEPTION_MATCH_BOOL(tmp_compexpr_left_1, tmp_compexpr_right_1);
408         if (tmp_res == -1) {
409             assert(ERROR_OCCURRED());
410  
411             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
412  
413  
414             exception_lineno = 35;
415  
416             goto try_except_handler_2;
417         }
418         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
419         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
420             goto branch_yes_1;
421         } else {
422             goto branch_no_1;
423         }
424     }
425     branch_yes_1:;
426     tmp_result = RERAISE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
427     if (unlikely(tmp_result == false)) {
428         exception_lineno = 33;
429     }
430  
431     if (exception_tb && exception_tb->tb_frame == &frame_d8ee625fa40f43044df0e3c7a6698d85->m_frame) frame_d8ee625fa40f43044df0e3c7a6698d85->m_frame.f_lineno = exception_tb->tb_lineno;
432  
433     goto try_except_handler_2;
434     branch_no_1:;
435     goto try_end_2;
436     // Exception handler code:
437     try_except_handler_2:;
438     exception_keeper_type_2 = exception_type;
439     exception_keeper_value_2 = exception_value;
440     exception_keeper_tb_2 = exception_tb;
441     exception_keeper_lineno_2 = exception_lineno;
442     exception_type = NULL;
443     exception_value = NULL;
444     exception_tb = NULL;
445     exception_lineno = 0;
446  
447     // Restore previous exception.
448     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
449     // Re-raise.
450     exception_type = exception_keeper_type_2;
451     exception_value = exception_keeper_value_2;
452     exception_tb = exception_keeper_tb_2;
453     exception_lineno = exception_keeper_lineno_2;
454  
455     goto frame_exception_exit_1;
456     // End of try:
457     try_end_2:;
458     // Restore previous exception.
459     SET_CURRENT_EXCEPTION(exception_preserved_type_1, exception_preserved_value_1, exception_preserved_tb_1);
460     goto try_end_1;
461     NUITKA_CANNOT_GET_HERE("exception handler codes exits in all cases");
462     return NULL;
463     // End of try:
464     try_end_1:;
465  
466 #if 0
467     RESTORE_FRAME_EXCEPTION(frame_d8ee625fa40f43044df0e3c7a6698d85);
468 #endif
469  
470     // Put the previous frame back on top.
471     popFrameStack();
472  
473     goto frame_no_exception_1;
474  
475     frame_exception_exit_1:;
476  
477 #if 0
478     RESTORE_FRAME_EXCEPTION(frame_d8ee625fa40f43044df0e3c7a6698d85);
479 #endif
480  
481     if (exception_tb == NULL) {
482         exception_tb = MAKE_TRACEBACK(frame_d8ee625fa40f43044df0e3c7a6698d85, exception_lineno);
483     } else if (exception_tb->tb_frame != &frame_d8ee625fa40f43044df0e3c7a6698d85->m_frame) {
484         exception_tb = ADD_TRACEBACK(exception_tb, frame_d8ee625fa40f43044df0e3c7a6698d85, exception_lineno);
485     }
486  
487     // Attachs locals to frame if any.
488     Nuitka_Frame_AttachLocals(
489         frame_d8ee625fa40f43044df0e3c7a6698d85,
490         type_description_1
491     );
492  
493  
494     // Release cached frame.
495     if (frame_d8ee625fa40f43044df0e3c7a6698d85 == cache_frame_d8ee625fa40f43044df0e3c7a6698d85) {
496 #if _DEBUG_REFCOUNTS
497         count_active_frame_cache_instances -= 1;
498         count_released_frame_cache_instances += 1;
499 #endif
500  
501         Py_DECREF(frame_d8ee625fa40f43044df0e3c7a6698d85);
502     }
503     cache_frame_d8ee625fa40f43044df0e3c7a6698d85 = NULL;
504  
505     assertFrameObject(frame_d8ee625fa40f43044df0e3c7a6698d85);
506  
507     // Put the previous frame back on top.
508     popFrameStack();
509  
510     // Return the error.
511     goto function_exception_exit;
512  
513     frame_no_exception_1:;
514     tmp_return_value = Py_None;
515     Py_INCREF(tmp_return_value);
516     goto function_return_exit;
517  
518     NUITKA_CANNOT_GET_HERE("Return statement must have exited already.");
519     return NULL;
520  
521 function_exception_exit:
522     assert(exception_type);
523     RESTORE_ERROR_OCCURRED(exception_type, exception_value, exception_tb);
524  
525     return NULL;
526  
527 function_return_exit:
528    // Function cleanup code if any.
529  
530  
531    // Actual function exit with return value, making sure we did not make
532    // the error status worse despite non-NULL return.
533    CHECK_OBJECT(tmp_return_value);
534    assert(had_error || !ERROR_OCCURRED());
535    return tmp_return_value;
536 }
537  
538  
539 273
540 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() { 274 static PyObject *MAKE_FUNCTION___main__$$$function_1_raisy() {
541     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 275     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
542         impl___main__$$$function_1_raisy, 276         impl___main__$$$function_1_raisy,
543         const_str_plain_raisy, 277         const_str_plain_raisy,
561 295
562 296
563 297
564 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() { 298 static PyObject *MAKE_FUNCTION___main__$$$function_2_calledRepeatedly() {
565     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 299     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
n 566         impl___main__$$$function_2_calledRepeatedly, n 300         NULL,
567         const_str_plain_calledRepeatedly, 301         const_str_plain_calledRepeatedly,
568 #if PYTHON_VERSION >= 300 302 #if PYTHON_VERSION >= 300
569         NULL, 303         NULL,
570 #endif 304 #endif
n 571         codeobj_d8ee625fa40f43044df0e3c7a6698d85, n 305         codeobj_6e97a7078f9f239912c55385cfa60008,
572         NULL, 306         NULL,
573 #if PYTHON_VERSION >= 300 307 #if PYTHON_VERSION >= 300
574         NULL, 308         NULL,
575         NULL, 309         NULL,
576 #endif 310 #endif
612 // Provide a way to create find a function via its C code and create it back 346 // Provide a way to create find a function via its C code and create it back
613 // in another process, useful for multiprocessing extensions like dill 347 // in another process, useful for multiprocessing extensions like dill
614 348
615 function_impl_code functable___main__[] = { 349 function_impl_code functable___main__[] = {
616     impl___main__$$$function_1_raisy, 350     impl___main__$$$function_1_raisy,
n 617     impl___main__$$$function_2_calledRepeatedly, n 351     NULL,
618     NULL 352     NULL
619 }; 353 };
620 354
621 static char const *_reduce_compiled_function_argnames[] = { 355 static char const *_reduce_compiled_function_argnames[] = {
622     "func", 356     "func",
1155 889
1156         if (tmp_mvar_value_2 == NULL) { 890         if (tmp_mvar_value_2 == NULL) {
1157 891
1158             exception_type = PyExc_NameError; 892             exception_type = PyExc_NameError;
1159             Py_INCREF(exception_type); 893             Py_INCREF(exception_type);
n 1160             exception_value = UNSTREAM_STRING(&constant_bin[ 54 ], 38, 0); n 894             exception_value = UNSTREAM_STRING(&constant_bin[ 27 ], 38, 0);
1161             exception_tb = NULL; 895             exception_tb = NULL;
1162             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 896             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
1163             CHAIN_EXCEPTION(exception_value); 897             CHAIN_EXCEPTION(exception_value);
1164 898
1165             exception_lineno = 43; 899             exception_lineno = 43;
1248             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 27, 0); 982             exception_value = UNSTREAM_STRING(&constant_bin[ 0 ], 27, 0);
1249             exception_tb = NULL; 983             exception_tb = NULL;
1250             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb); 984             NORMALIZE_EXCEPTION(&exception_type, &exception_value, &exception_tb);
1251             CHAIN_EXCEPTION(exception_value); 985             CHAIN_EXCEPTION(exception_value);
1252 986
n 1253             exception_lineno = 46; n 987             exception_lineno = 48;
1254 988
1255             goto frame_exception_exit_1; 989             goto frame_exception_exit_1;
1256         } 990         }
1257 991
1258         tmp_compexpr_left_1 = tmp_mvar_value_3; 992         tmp_compexpr_left_1 = tmp_mvar_value_3;
n 1259         tmp_compexpr_right_1 = const_int_pos_50000; n 993         tmp_compexpr_right_1 = const_int_0;
1260         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1); 994         tmp_operand_name_1 = RICH_COMPARE_EQ_OBJECT_OBJECT_OBJECT(tmp_compexpr_left_1, tmp_compexpr_right_1);
1261         if (tmp_operand_name_1 == NULL) { 995         if (tmp_operand_name_1 == NULL) {
1262             assert(ERROR_OCCURRED()); 996             assert(ERROR_OCCURRED());
1263 997
1264             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 998             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1265 999
1266 1000
n 1267             exception_lineno = 46; n 1001             exception_lineno = 48;
1268 1002
1269             goto frame_exception_exit_1; 1003             goto frame_exception_exit_1;
1270         } 1004         }
1271         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1005         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1272         Py_DECREF(tmp_operand_name_1); 1006         Py_DECREF(tmp_operand_name_1);
1274             assert(ERROR_OCCURRED()); 1008             assert(ERROR_OCCURRED());
1275 1009
1276             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1010             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1277 1011
1278 1012
n 1279             exception_lineno = 46; n 1013             exception_lineno = 48;
1280 1014
1281             goto frame_exception_exit_1; 1015             goto frame_exception_exit_1;
1282         } 1016         }
1283         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1017         tmp_condition_result_1 = (tmp_res == 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1284         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) { 1018         if (tmp_condition_result_1 == NUITKA_BOOL_TRUE) {
1291     { 1025     {
1292         PyObject *tmp_raise_type_1; 1026         PyObject *tmp_raise_type_1;
1293         tmp_raise_type_1 = PyExc_AssertionError; 1027         tmp_raise_type_1 = PyExc_AssertionError;
1294         exception_type = tmp_raise_type_1; 1028         exception_type = tmp_raise_type_1;
1295         Py_INCREF(tmp_raise_type_1); 1029         Py_INCREF(tmp_raise_type_1);
t 1296         exception_lineno = 46; t 1030         exception_lineno = 48;
1297         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb); 1031         RAISE_EXCEPTION_WITH_TYPE(&exception_type, &exception_value, &exception_tb);
1298 1032
1299         goto frame_exception_exit_1; 1033         goto frame_exception_exit_1;
1300     } 1034     }
1301     branch_no_1:; 1035     branch_no_1:;