Construct CallCompiledObjectMethodPosArgsVariable

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)27697144888.11538461538461257.0CPython 2.789501144240.03846153846155424.26199256799595Nuitka (master)89501096391.96153846153845424.26203539384875Nuitka (develop)89501006543.8846153846154424.26211569232277Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)25731160388.11538461538461257.0CPython 3.598849544240.03846153846155409.18284834489475Nuitka (master)98851888391.96153846153845409.1805972281368Nuitka (develop)98851608543.8846153846154409.18086613286897Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    inst.compiled_method(a, b, c, d, e, f)
    inst.compiled_method(a, c, b, d, e, f)
    inst.compiled_method(a, b, c, d, f, e)
# construct_alternative



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

print("OK.")

Source Code without Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin



# construct_alternative
    pass
# construct_end

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

print("OK.")

Context Diff of Source Code


Construct
Baseline
37     inst = C() 37     inst = C()
38 38
39     # This is supposed to make a call to a non-compiled function, which is 39     # This is supposed to make a call to a non-compiled function, which is
40     # being optimized separately. 40     # being optimized separately.
41 # construct_begin 41 # construct_begin
n 42     inst.compiled_method(a, b, c, d, e, f) n
43     inst.compiled_method(a, c, b, d, e, f)
44     inst.compiled_method(a, b, c, d, f, e)
45 # construct_alternative
46 42
47 43
t t 44  
45 # construct_alternative
46     pass
47 # construct_end
48 48
49 import itertools 49 import itertools
50 for x in itertools.repeat(None, 50000): 50 for x in itertools.repeat(None, 50000):
51     calledRepeatedly() 51     calledRepeatedly()
52 52

Context Diff of Generated Code


Construct
Baseline
39 static PyObject *const_str_plain_compiled_method; 39 static PyObject *const_str_plain_compiled_method;
40 extern PyObject *const_str_plain___class__; 40 extern PyObject *const_str_plain___class__;
41 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf; 41 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf;
42 static PyObject *const_tuple_str_plain___class___tuple; 42 static PyObject *const_tuple_str_plain___class___tuple;
43 static PyObject *const_str_plain___qualname__; 43 static PyObject *const_str_plain___qualname__;
n 44 static PyObject *const_str_digest_f13ed91da935aaa369d81c0baef6fb93; n
45 static PyObject *const_str_plain_f; 44 static PyObject *const_str_plain_f;
46 static PyObject *const_str_plain_object; 45 static PyObject *const_str_plain_object;
47 extern PyObject *const_str_plain___file__; 46 extern PyObject *const_str_plain___file__;
48 extern PyObject *const_int_0; 47 extern PyObject *const_int_0;
49 static PyObject *const_tuple_str_plain_C_tuple_type_object_tuple_tuple; 48 static PyObject *const_tuple_str_plain_C_tuple_type_object_tuple_tuple;
50 extern PyObject *const_str_plain_print; 49 extern PyObject *const_str_plain_print;
51 static PyObject *const_str_plain___prepare__; 50 static PyObject *const_str_plain___prepare__;
52 static PyObject *const_str_plain_a; 51 static PyObject *const_str_plain_a;
53 static PyObject *const_int_pos_50000; 52 static PyObject *const_int_pos_50000;
n n 53 extern PyObject *const_str_plain___doc__;
54 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 54 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
55 static PyObject *const_str_plain_self; 55 static PyObject *const_str_plain_self;
56 static PyObject *const_str_plain_inst; 56 static PyObject *const_str_plain_inst;
57 static PyObject *const_str_plain_e; 57 static PyObject *const_str_plain_e;
58 static PyObject *const_str_plain_calledRepeatedly; 58 static PyObject *const_str_plain_calledRepeatedly;
70 static PyObject *const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple; 70 static PyObject *const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple;
71 extern PyObject *const_str_plain___main__; 71 extern PyObject *const_str_plain___main__;
72 extern PyObject *const_str_plain_type; 72 extern PyObject *const_str_plain_type;
73 static PyObject *const_str_plain_getUnknownValue; 73 static PyObject *const_str_plain_getUnknownValue;
74 static PyObject *const_str_plain_d; 74 static PyObject *const_str_plain_d;
n 75 extern PyObject *const_str_plain___doc__; n 75 static PyObject *const_str_digest_f13ed91da935aaa369d81c0baef6fb93;
76 extern PyObject *const_str_plain___cached__; 76 extern PyObject *const_str_plain___cached__;
77 static PyObject *const_str_plain_print_function; 77 static PyObject *const_str_plain_print_function;
78 static PyObject *module_filename_obj; 78 static PyObject *module_filename_obj;
79 79
80 static bool constants_created = false; 80 static bool constants_created = false;
89     const_str_plain_compiled_method = UNSTREAM_STRING_ASCII( &constant_bin[ 19 ], 15, 1 ); 89     const_str_plain_compiled_method = UNSTREAM_STRING_ASCII( &constant_bin[ 19 ], 15, 1 );
90     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING_ASCII( &constant_bin[ 34 ], 17, 0 ); 90     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING_ASCII( &constant_bin[ 34 ], 17, 0 );
91     const_tuple_str_plain___class___tuple = PyTuple_New( 1 ); 91     const_tuple_str_plain___class___tuple = PyTuple_New( 1 );
92     PyTuple_SET_ITEM( const_tuple_str_plain___class___tuple, 0, const_str_plain___class__ ); Py_INCREF( const_str_plain___class__ ); 92     PyTuple_SET_ITEM( const_tuple_str_plain___class___tuple, 0, const_str_plain___class__ ); Py_INCREF( const_str_plain___class__ );
93     const_str_plain___qualname__ = UNSTREAM_STRING_ASCII( &constant_bin[ 51 ], 12, 1 ); 93     const_str_plain___qualname__ = UNSTREAM_STRING_ASCII( &constant_bin[ 51 ], 12, 1 );
n 94     const_str_digest_f13ed91da935aaa369d81c0baef6fb93 = UNSTREAM_STRING_ASCII( &constant_bin[ 63 ], 90, 0 ); n
95     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 153 ], 1, 1 ); 94     const_str_plain_f = UNSTREAM_STRING_ASCII( &constant_bin[ 63 ], 1, 1 );
96     const_str_plain_object = UNSTREAM_STRING_ASCII( &constant_bin[ 154 ], 6, 1 ); 95     const_str_plain_object = UNSTREAM_STRING_ASCII( &constant_bin[ 64 ], 6, 1 );
97     const_tuple_str_plain_C_tuple_type_object_tuple_tuple = PyTuple_New( 2 ); 96     const_tuple_str_plain_C_tuple_type_object_tuple_tuple = PyTuple_New( 2 );
98     const_str_plain_C = UNSTREAM_STRING_ASCII( &constant_bin[ 34 ], 1, 1 ); 97     const_str_plain_C = UNSTREAM_STRING_ASCII( &constant_bin[ 34 ], 1, 1 );
99     PyTuple_SET_ITEM( const_tuple_str_plain_C_tuple_type_object_tuple_tuple, 0, const_str_plain_C ); Py_INCREF( const_str_plain_C ); 98     PyTuple_SET_ITEM( const_tuple_str_plain_C_tuple_type_object_tuple_tuple, 0, const_str_plain_C ); Py_INCREF( const_str_plain_C );
100     PyTuple_SET_ITEM( const_tuple_str_plain_C_tuple_type_object_tuple_tuple, 1, const_tuple_type_object_tuple ); Py_INCREF( const_tuple_type_object_tuple ); 99     PyTuple_SET_ITEM( const_tuple_str_plain_C_tuple_type_object_tuple_tuple, 1, const_tuple_type_object_tuple ); Py_INCREF( const_tuple_type_object_tuple );
n 101     const_str_plain___prepare__ = UNSTREAM_STRING_ASCII( &constant_bin[ 160 ], 11, 1 ); n 100     const_str_plain___prepare__ = UNSTREAM_STRING_ASCII( &constant_bin[ 70 ], 11, 1 );
102     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 13 ], 1, 1 ); 101     const_str_plain_a = UNSTREAM_STRING_ASCII( &constant_bin[ 13 ], 1, 1 );
103     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 102     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
104     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 103     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 105     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 171 ], 3, 0 ); n 104     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING_ASCII( &constant_bin[ 81 ], 3, 0 );
106     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 105     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 107     const_str_plain_self = UNSTREAM_STRING_ASCII( &constant_bin[ 174 ], 4, 1 ); n 106     const_str_plain_self = UNSTREAM_STRING_ASCII( &constant_bin[ 84 ], 4, 1 );
108     const_str_plain_inst = UNSTREAM_STRING_ASCII( &constant_bin[ 178 ], 4, 1 ); 107     const_str_plain_inst = UNSTREAM_STRING_ASCII( &constant_bin[ 88 ], 4, 1 );
109     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 ); 108     const_str_plain_e = UNSTREAM_STRING_ASCII( &constant_bin[ 3 ], 1, 1 );
n 110     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 182 ], 16, 1 ); n 109     const_str_plain_calledRepeatedly = UNSTREAM_STRING_ASCII( &constant_bin[ 92 ], 16, 1 );
111     const_int_pos_8 = PyLong_FromUnsignedLong( 8ul ); 110     const_int_pos_8 = PyLong_FromUnsignedLong( 8ul );
n 112     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 198 ], 8, 0 ); n 111     const_str_angle_module = UNSTREAM_STRING_ASCII( &constant_bin[ 108 ], 8, 0 );
113     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 206 ], 4, 1 ); 112     const_str_plain_None = UNSTREAM_STRING_ASCII( &constant_bin[ 116 ], 4, 1 );
114     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 ); 113     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 );
115     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self ); 114     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self );
116     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 115     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a );
117     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 116     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b );
118     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 1, 1 ); 117     const_str_plain_c = UNSTREAM_STRING_ASCII( &constant_bin[ 14 ], 1, 1 );
119     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 3, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 118     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 3, const_str_plain_c ); Py_INCREF( const_str_plain_c );
120     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 26 ], 1, 1 ); 119     const_str_plain_d = UNSTREAM_STRING_ASCII( &constant_bin[ 26 ], 1, 1 );
121     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 4, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 120     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 4, const_str_plain_d ); Py_INCREF( const_str_plain_d );
122     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 5, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 121     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 5, const_str_plain_e ); Py_INCREF( const_str_plain_e );
123     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 122     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 124     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 88 ], 1, 1 ); n 123     const_str_plain_x = UNSTREAM_STRING_ASCII( &constant_bin[ 120 ], 1, 1 );
125     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 210 ], 6, 1 ); 124     const_str_plain_repeat = UNSTREAM_STRING_ASCII( &constant_bin[ 121 ], 6, 1 );
126     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 125     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
127     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 126     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
128     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 127     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
129     const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple = PyTuple_New( 7 ); 128     const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple = PyTuple_New( 7 );
130     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst ); 129     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst );
132     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 131     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c );
133     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 3, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 132     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 3, const_str_plain_e ); Py_INCREF( const_str_plain_e );
134     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 4, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 133     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 4, const_str_plain_a ); Py_INCREF( const_str_plain_a );
135     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 134     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f );
136     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 6, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 135     PyTuple_SET_ITEM( const_tuple_47a35c5abef04e975fe4b9402660ca47_tuple, 6, const_str_plain_d ); Py_INCREF( const_str_plain_d );
n 137     const_str_plain_getUnknownValue = UNSTREAM_STRING_ASCII( &constant_bin[ 216 ], 15, 1 ); n 136     const_str_plain_getUnknownValue = UNSTREAM_STRING_ASCII( &constant_bin[ 127 ], 15, 1 );
137     const_str_digest_f13ed91da935aaa369d81c0baef6fb93 = UNSTREAM_STRING_ASCII( &constant_bin[ 142 ], 90, 0 );
138     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 231 ], 14, 1 ); 138     const_str_plain_print_function = UNSTREAM_STRING_ASCII( &constant_bin[ 232 ], 14, 1 );
139 139
140     constants_created = true; 140     constants_created = true;
141 } 141 }
142 142
143 #ifndef __NUITKA_NO_ASSERT__ 143 #ifndef __NUITKA_NO_ASSERT__
667     } 667     }
668     assert( var_inst == NULL ); 668     assert( var_inst == NULL );
669     var_inst = tmp_assign_source_7; 669     var_inst = tmp_assign_source_7;
670 670
671     } 671     }
n 672     { n
673     PyObject *tmp_called_name_8;
674     PyObject *tmp_source_name_1;
675     PyObject *tmp_call_result_1;
676     PyObject *tmp_args_element_name_1;
677     PyObject *tmp_args_element_name_2;
678     PyObject *tmp_args_element_name_3;
679     PyObject *tmp_args_element_name_4;
680     PyObject *tmp_args_element_name_5;
681     PyObject *tmp_args_element_name_6;
682     CHECK_OBJECT( var_inst );
683     tmp_source_name_1 = var_inst;
684     tmp_called_name_8 = LOOKUP_ATTRIBUTE( tmp_source_name_1, const_str_plain_compiled_method );
685     if ( tmp_called_name_8 == NULL )
686     {
687         assert( ERROR_OCCURRED() );
688  
689         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
690  
691  
692         exception_lineno = 42;
693         type_description_1 = "ooooooo";
694         goto frame_exception_exit_1;
695     }
696     if ( var_a == NULL )
697     {
698         Py_DECREF( tmp_called_name_8 );
699         exception_type = PyExc_UnboundLocalError;
700         Py_INCREF( exception_type );
701         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
702         exception_tb = NULL;
703         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
704         CHAIN_EXCEPTION( exception_value );
705  
706         exception_lineno = 42;
707         type_description_1 = "ooooooo";
708         goto frame_exception_exit_1;
709     }
710  
711     tmp_args_element_name_1 = var_a;
712     if ( var_b == NULL )
713     {
714         Py_DECREF( tmp_called_name_8 );
715         exception_type = PyExc_UnboundLocalError;
716         Py_INCREF( exception_type );
717         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
718         exception_tb = NULL;
719         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
720         CHAIN_EXCEPTION( exception_value );
721  
722         exception_lineno = 42;
723         type_description_1 = "ooooooo";
724         goto frame_exception_exit_1;
725     }
726  
727     tmp_args_element_name_2 = var_b;
728     if ( var_c == NULL )
729     {
730         Py_DECREF( tmp_called_name_8 );
731         exception_type = PyExc_UnboundLocalError;
732         Py_INCREF( exception_type );
733         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
734         exception_tb = NULL;
735         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
736         CHAIN_EXCEPTION( exception_value );
737  
738         exception_lineno = 42;
739         type_description_1 = "ooooooo";
740         goto frame_exception_exit_1;
741     }
742  
743     tmp_args_element_name_3 = var_c;
744     if ( var_d == NULL )
745     {
746         Py_DECREF( tmp_called_name_8 );
747         exception_type = PyExc_UnboundLocalError;
748         Py_INCREF( exception_type );
749         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
750         exception_tb = NULL;
751         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
752         CHAIN_EXCEPTION( exception_value );
753  
754         exception_lineno = 42;
755         type_description_1 = "ooooooo";
756         goto frame_exception_exit_1;
757     }
758  
759     tmp_args_element_name_4 = var_d;
760     if ( var_e == NULL )
761     {
762         Py_DECREF( tmp_called_name_8 );
763         exception_type = PyExc_UnboundLocalError;
764         Py_INCREF( exception_type );
765         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
766         exception_tb = NULL;
767         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
768         CHAIN_EXCEPTION( exception_value );
769  
770         exception_lineno = 42;
771         type_description_1 = "ooooooo";
772         goto frame_exception_exit_1;
773     }
774  
775     tmp_args_element_name_5 = var_e;
776     if ( var_f == NULL )
777     {
778         Py_DECREF( tmp_called_name_8 );
779         exception_type = PyExc_UnboundLocalError;
780         Py_INCREF( exception_type );
781         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
782         exception_tb = NULL;
783         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
784         CHAIN_EXCEPTION( exception_value );
785  
786         exception_lineno = 42;
787         type_description_1 = "ooooooo";
788         goto frame_exception_exit_1;
789     }
790  
791     tmp_args_element_name_6 = var_f;
792     frame_f35a32ac1bc1324a3d5f24d29b7d4d94->m_frame.f_lineno = 42;
793     {
794         PyObject *call_args[] = { tmp_args_element_name_1, tmp_args_element_name_2, tmp_args_element_name_3, tmp_args_element_name_4, tmp_args_element_name_5, tmp_args_element_name_6 };
795         tmp_call_result_1 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_8, call_args );
796     }
797  
798     Py_DECREF( tmp_called_name_8 );
799     if ( tmp_call_result_1 == NULL )
800     {
801         assert( ERROR_OCCURRED() );
802  
803         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
804  
805  
806         exception_lineno = 42;
807         type_description_1 = "ooooooo";
808         goto frame_exception_exit_1;
809     }
810     Py_DECREF( tmp_call_result_1 );
811     }
812     {
813     PyObject *tmp_called_name_9;
814     PyObject *tmp_source_name_2;
815     PyObject *tmp_call_result_2;
816     PyObject *tmp_args_element_name_7;
817     PyObject *tmp_args_element_name_8;
818     PyObject *tmp_args_element_name_9;
819     PyObject *tmp_args_element_name_10;
820     PyObject *tmp_args_element_name_11;
821     PyObject *tmp_args_element_name_12;
822     if ( var_inst == NULL )
823     {
824  
825         exception_type = PyExc_UnboundLocalError;
826         Py_INCREF( exception_type );
827         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
828         exception_tb = NULL;
829         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
830         CHAIN_EXCEPTION( exception_value );
831  
832         exception_lineno = 43;
833         type_description_1 = "ooooooo";
834         goto frame_exception_exit_1;
835     }
836  
837     tmp_source_name_2 = var_inst;
838     tmp_called_name_9 = LOOKUP_ATTRIBUTE( tmp_source_name_2, const_str_plain_compiled_method );
839     if ( tmp_called_name_9 == NULL )
840     {
841         assert( ERROR_OCCURRED() );
842  
843         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
844  
845  
846         exception_lineno = 43;
847         type_description_1 = "ooooooo";
848         goto frame_exception_exit_1;
849     }
850     if ( var_a == NULL )
851     {
852         Py_DECREF( tmp_called_name_9 );
853         exception_type = PyExc_UnboundLocalError;
854         Py_INCREF( exception_type );
855         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
856         exception_tb = NULL;
857         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
858         CHAIN_EXCEPTION( exception_value );
859  
860         exception_lineno = 43;
861         type_description_1 = "ooooooo";
862         goto frame_exception_exit_1;
863     }
864  
865     tmp_args_element_name_7 = var_a;
866     if ( var_c == NULL )
867     {
868         Py_DECREF( tmp_called_name_9 );
869         exception_type = PyExc_UnboundLocalError;
870         Py_INCREF( exception_type );
871         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
872         exception_tb = NULL;
873         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
874         CHAIN_EXCEPTION( exception_value );
875  
876         exception_lineno = 43;
877         type_description_1 = "ooooooo";
878         goto frame_exception_exit_1;
879     }
880  
881     tmp_args_element_name_8 = var_c;
882     if ( var_b == NULL )
883     {
884         Py_DECREF( tmp_called_name_9 );
885         exception_type = PyExc_UnboundLocalError;
886         Py_INCREF( exception_type );
887         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
888         exception_tb = NULL;
889         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
890         CHAIN_EXCEPTION( exception_value );
891  
892         exception_lineno = 43;
893         type_description_1 = "ooooooo";
894         goto frame_exception_exit_1;
895     }
896  
897     tmp_args_element_name_9 = var_b;
898     if ( var_d == NULL )
899     {
900         Py_DECREF( tmp_called_name_9 );
901         exception_type = PyExc_UnboundLocalError;
902         Py_INCREF( exception_type );
903         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
904         exception_tb = NULL;
905         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
906         CHAIN_EXCEPTION( exception_value );
907  
908         exception_lineno = 43;
909         type_description_1 = "ooooooo";
910         goto frame_exception_exit_1;
911     }
912  
913     tmp_args_element_name_10 = var_d;
914     if ( var_e == NULL )
915     {
916         Py_DECREF( tmp_called_name_9 );
917         exception_type = PyExc_UnboundLocalError;
918         Py_INCREF( exception_type );
919         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
920         exception_tb = NULL;
921         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
922         CHAIN_EXCEPTION( exception_value );
923  
924         exception_lineno = 43;
925         type_description_1 = "ooooooo";
926         goto frame_exception_exit_1;
927     }
928  
929     tmp_args_element_name_11 = var_e;
930     if ( var_f == NULL )
931     {
932         Py_DECREF( tmp_called_name_9 );
933         exception_type = PyExc_UnboundLocalError;
934         Py_INCREF( exception_type );
935         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
936         exception_tb = NULL;
937         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
938         CHAIN_EXCEPTION( exception_value );
939  
940         exception_lineno = 43;
941         type_description_1 = "ooooooo";
942         goto frame_exception_exit_1;
943     }
944  
945     tmp_args_element_name_12 = var_f;
946     frame_f35a32ac1bc1324a3d5f24d29b7d4d94->m_frame.f_lineno = 43;
947     {
948         PyObject *call_args[] = { tmp_args_element_name_7, tmp_args_element_name_8, tmp_args_element_name_9, tmp_args_element_name_10, tmp_args_element_name_11, tmp_args_element_name_12 };
949         tmp_call_result_2 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_9, call_args );
950     }
951  
952     Py_DECREF( tmp_called_name_9 );
953     if ( tmp_call_result_2 == NULL )
954     {
955         assert( ERROR_OCCURRED() );
956  
957         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
958  
959  
960         exception_lineno = 43;
961         type_description_1 = "ooooooo";
962         goto frame_exception_exit_1;
963     }
964     Py_DECREF( tmp_call_result_2 );
965     }
966     {
967     PyObject *tmp_called_name_10;
968     PyObject *tmp_source_name_3;
969     PyObject *tmp_call_result_3;
970     PyObject *tmp_args_element_name_13;
971     PyObject *tmp_args_element_name_14;
972     PyObject *tmp_args_element_name_15;
973     PyObject *tmp_args_element_name_16;
974     PyObject *tmp_args_element_name_17;
975     PyObject *tmp_args_element_name_18;
976     if ( var_inst == NULL )
977     {
978  
979         exception_type = PyExc_UnboundLocalError;
980         Py_INCREF( exception_type );
981         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
982         exception_tb = NULL;
983         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
984         CHAIN_EXCEPTION( exception_value );
985  
986         exception_lineno = 44;
987         type_description_1 = "ooooooo";
988         goto frame_exception_exit_1;
989     }
990  
991     tmp_source_name_3 = var_inst;
992     tmp_called_name_10 = LOOKUP_ATTRIBUTE( tmp_source_name_3, const_str_plain_compiled_method );
993     if ( tmp_called_name_10 == NULL )
994     {
995         assert( ERROR_OCCURRED() );
996  
997         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
998  
999  
1000         exception_lineno = 44;
1001         type_description_1 = "ooooooo";
1002         goto frame_exception_exit_1;
1003     }
1004     if ( var_a == NULL )
1005     {
1006         Py_DECREF( tmp_called_name_10 );
1007         exception_type = PyExc_UnboundLocalError;
1008         Py_INCREF( exception_type );
1009         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
1010         exception_tb = NULL;
1011         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1012         CHAIN_EXCEPTION( exception_value );
1013  
1014         exception_lineno = 44;
1015         type_description_1 = "ooooooo";
1016         goto frame_exception_exit_1;
1017     }
1018  
1019     tmp_args_element_name_13 = var_a;
1020     if ( var_b == NULL )
1021     {
1022         Py_DECREF( tmp_called_name_10 );
1023         exception_type = PyExc_UnboundLocalError;
1024         Py_INCREF( exception_type );
1025         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
1026         exception_tb = NULL;
1027         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1028         CHAIN_EXCEPTION( exception_value );
1029  
1030         exception_lineno = 44;
1031         type_description_1 = "ooooooo";
1032         goto frame_exception_exit_1;
1033     }
1034  
1035     tmp_args_element_name_14 = var_b;
1036     if ( var_c == NULL )
1037     {
1038         Py_DECREF( tmp_called_name_10 );
1039         exception_type = PyExc_UnboundLocalError;
1040         Py_INCREF( exception_type );
1041         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
1042         exception_tb = NULL;
1043         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1044         CHAIN_EXCEPTION( exception_value );
1045  
1046         exception_lineno = 44;
1047         type_description_1 = "ooooooo";
1048         goto frame_exception_exit_1;
1049     }
1050  
1051     tmp_args_element_name_15 = var_c;
1052     if ( var_d == NULL )
1053     {
1054         Py_DECREF( tmp_called_name_10 );
1055         exception_type = PyExc_UnboundLocalError;
1056         Py_INCREF( exception_type );
1057         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
1058         exception_tb = NULL;
1059         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1060         CHAIN_EXCEPTION( exception_value );
1061  
1062         exception_lineno = 44;
1063         type_description_1 = "ooooooo";
1064         goto frame_exception_exit_1;
1065     }
1066  
1067     tmp_args_element_name_16 = var_d;
1068     if ( var_f == NULL )
1069     {
1070         Py_DECREF( tmp_called_name_10 );
1071         exception_type = PyExc_UnboundLocalError;
1072         Py_INCREF( exception_type );
1073         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
1074         exception_tb = NULL;
1075         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1076         CHAIN_EXCEPTION( exception_value );
1077  
1078         exception_lineno = 44;
1079         type_description_1 = "ooooooo";
1080         goto frame_exception_exit_1;
1081     }
1082  
1083     tmp_args_element_name_17 = var_f;
1084     if ( var_e == NULL )
1085     {
1086         Py_DECREF( tmp_called_name_10 );
1087         exception_type = PyExc_UnboundLocalError;
1088         Py_INCREF( exception_type );
1089         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
1090         exception_tb = NULL;
1091         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1092         CHAIN_EXCEPTION( exception_value );
1093  
1094         exception_lineno = 44;
1095         type_description_1 = "ooooooo";
1096         goto frame_exception_exit_1;
1097     }
1098  
1099     tmp_args_element_name_18 = var_e;
1100     frame_f35a32ac1bc1324a3d5f24d29b7d4d94->m_frame.f_lineno = 44;
1101     {
1102         PyObject *call_args[] = { tmp_args_element_name_13, tmp_args_element_name_14, tmp_args_element_name_15, tmp_args_element_name_16, tmp_args_element_name_17, tmp_args_element_name_18 };
1103         tmp_call_result_3 = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_10, call_args );
1104     }
1105  
1106     Py_DECREF( tmp_called_name_10 );
1107     if ( tmp_call_result_3 == NULL )
1108     {
1109         assert( ERROR_OCCURRED() );
1110  
1111         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
1112  
1113  
1114         exception_lineno = 44;
1115         type_description_1 = "ooooooo";
1116         goto frame_exception_exit_1;
1117     }
1118     Py_DECREF( tmp_call_result_3 );
1119     }
1120 672
1121 #if 0 673 #if 0
1122     RESTORE_FRAME_EXCEPTION( frame_f35a32ac1bc1324a3d5f24d29b7d4d94 ); 674     RESTORE_FRAME_EXCEPTION( frame_f35a32ac1bc1324a3d5f24d29b7d4d94 );
1123 #endif 675 #endif
1124 676
1181     NUITKA_CANNOT_GET_HERE( __main__$$$function_3_calledRepeatedly ); 733     NUITKA_CANNOT_GET_HERE( __main__$$$function_3_calledRepeatedly );
1182     return NULL; 734     return NULL;
1183     // Return handler code: 735     // Return handler code:
1184     try_return_handler_1:; 736     try_return_handler_1:;
1185     { 737     {
n n 738     CHECK_OBJECT( (PyObject *)var_inst );
1186     Py_XDECREF( var_inst ); 739     Py_DECREF( var_inst );
1187     var_inst = NULL; 740     var_inst = NULL;
1188 741
1189     } 742     }
1190     { 743     {
1191     Py_XDECREF( var_b ); 744     Py_XDECREF( var_b );
1229     exception_type = NULL; 782     exception_type = NULL;
1230     exception_value = NULL; 783     exception_value = NULL;
1231     exception_tb = NULL; 784     exception_tb = NULL;
1232     exception_lineno = 0; 785     exception_lineno = 0;
1233 786
t 1234     { t
1235     Py_XDECREF( var_inst );
1236     var_inst = NULL;
1237  
1238     }
1239     { 787     {
1240     Py_XDECREF( var_b ); 788     Py_XDECREF( var_b );
1241     var_b = NULL; 789     var_b = NULL;
1242 790
1243     } 791     }