Construct CallCompiledObjectMethodPosArgsConstant6

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)26472891572.9230769230769257.0CPython 2.7104953611194.46153846153845406.14477967017694Nuitka (historic)88057775316.0421.916464495533Nuitka (master)88056971437.53846153846143421.9172150020246Nuitka (develop)88057835559.0769230769231421.91640848758584Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant6Ticks Construct CallCompiledObjectMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000CPython 3.5Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)25075366172.9230769230769257.0CPython 3.50194.46153846153845504.11538461538464Nuitka (historic)86715616316.0418.6579571363896Nuitka (master)86721419437.53846153846143418.65223833423454Nuitka (develop)86720961559.0769230769231418.6526896889454Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant6Ticks

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 calledRepeatedly():
    inst = C()

    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    inst.compiled_method("some", "random", "values", "to", "check", "call")
    inst.compiled_method("some", "other", "values", "to", "check", "call")
    inst.compiled_method("some", "new", "values", "to", "check", "call")

# construct_alternative



for x in xrange(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 calledRepeatedly():
    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

for x in xrange(50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
27     inst = C() 27     inst = C()
28 28
29     # This is supposed to make a call to a non-compiled function, which is 29     # This is supposed to make a call to a non-compiled function, which is
30     # being optimized separately. 30     # being optimized separately.
31 # construct_begin 31 # construct_begin
n 32     inst.compiled_method("some", "random", "values", "to", "check", "call") n 32  
33     inst.compiled_method("some", "other", "values", "to", "check", "call") 33  
34     inst.compiled_method("some", "new", "values", "to", "check", "call") 34  
35 35
36 # construct_alternative 36 # construct_alternative
t 37   t 37     pass
38   38 # construct_end
39 39
40 for x in xrange(50000): 40 for x in xrange(50000):
41     calledRepeatedly() 41     calledRepeatedly()
42 42
43 print("OK.") 43 print("OK.")

Context Diff of Generated Code


Construct
Baseline
30 PyObject *module___main__; 30 PyObject *module___main__;
31 PyDictObject *moduledict___main__; 31 PyDictObject *moduledict___main__;
32 32
33 /* The module constants used, if any. */ 33 /* The module constants used, if any. */
34 static PyObject *const_str_digest_b4844b7455ebcbeefa4b6675276b00c0; 34 static PyObject *const_str_digest_b4844b7455ebcbeefa4b6675276b00c0;
n 35 static PyObject *const_str_plain_to; n
36 static PyObject *const_str_plain_b; 35 static PyObject *const_str_plain_b;
37 extern PyObject *const_str_plain___module__; 36 extern PyObject *const_str_plain___module__;
38 static PyObject *const_str_plain_metaclass; 37 static PyObject *const_str_plain_metaclass;
39 static PyObject *const_str_plain___package__; 38 static PyObject *const_str_plain___package__;
40 static PyObject *const_str_plain_compiled_method; 39 static PyObject *const_str_plain_compiled_method;
41 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf; 40 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf;
n 42 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
43 static PyObject *const_str_plain___qualname__; 41 static PyObject *const_str_plain___qualname__;
n n 42 static PyObject *const_str_plain_f;
44 extern PyObject *const_int_pos_1; 43 extern PyObject *const_int_pos_1;
n 45 static PyObject *const_str_plain_values; n
46 extern PyObject *const_dict_empty; 44 extern PyObject *const_dict_empty;
n 47 static PyObject *const_str_plain_f; n
48 static PyObject *const_str_plain_object; 45 static PyObject *const_str_plain_object;
49 extern PyObject *const_str_plain___file__; 46 extern PyObject *const_str_plain___file__;
n 50 static PyObject *const_str_plain_other; n
51 extern PyObject *const_int_0; 47 extern PyObject *const_int_0;
n 52 static PyObject *const_str_plain_check; n
53 static PyObject *const_xrange_0_50000; 48 static PyObject *const_xrange_0_50000;
54 extern PyObject *const_str_plain_print; 49 extern PyObject *const_str_plain_print;
55 static PyObject *const_str_plain___prepare__; 50 static PyObject *const_str_plain___prepare__;
n 56 static PyObject *const_str_plain_call; n 51 static PyObject *const_str_plain_a;
57 static PyObject *const_int_pos_50000; 52 static PyObject *const_int_pos_50000;
n 58 static PyObject *const_str_plain_a; n
59 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 53 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 60 static PyObject *const_str_plain_random; n
61 static PyObject *const_str_plain_self; 54 static PyObject *const_str_plain_self;
62 static PyObject *const_str_plain_inst; 55 static PyObject *const_str_plain_inst;
63 static PyObject *const_str_plain_e; 56 static PyObject *const_str_plain_e;
64 static PyObject *const_str_plain_calledRepeatedly; 57 static PyObject *const_str_plain_calledRepeatedly;
65 static PyObject *const_str_angle_module; 58 static PyObject *const_str_angle_module;
66 static PyObject *const_tuple_ba58284e993f645f647ff630deb3d552_tuple; 59 static PyObject *const_tuple_ba58284e993f645f647ff630deb3d552_tuple;
67 static PyObject *const_str_plain_x; 60 static PyObject *const_str_plain_x;
68 static PyObject *const_str_plain_C; 61 static PyObject *const_str_plain_C;
69 extern PyObject *const_tuple_empty; 62 extern PyObject *const_tuple_empty;
n n 63 static PyObject *const_str_plain_c;
70 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 64 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 71 static PyObject *const_str_plain_c; n
72 static PyObject *const_tuple_str_plain_inst_tuple; 65 static PyObject *const_tuple_str_plain_inst_tuple;
n 73 static PyObject *const_str_plain_some; n
74 static PyObject *const_str_plain_new;
75 extern PyObject *const_str_plain___loader__; 66 extern PyObject *const_str_plain___loader__;
76 extern PyObject *const_str_plain___main__; 67 extern PyObject *const_str_plain___main__;
77 extern PyObject *const_str_plain_type; 68 extern PyObject *const_str_plain_type;
n 78 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
79 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
80 static PyObject *const_str_plain_d; 69 static PyObject *const_str_plain_d;
81 extern PyObject *const_str_plain___doc__; 70 extern PyObject *const_str_plain___doc__;
82 extern PyObject *const_str_plain___cached__; 71 extern PyObject *const_str_plain___cached__;
83 extern PyObject *const_str_plain___class__; 72 extern PyObject *const_str_plain___class__;
84 static PyObject *module_filename_obj; 73 static PyObject *module_filename_obj;
86 static bool constants_created = false; 75 static bool constants_created = false;
87 76
88 static void createModuleConstants( void ) 77 static void createModuleConstants( void )
89 { 78 {
90     const_str_digest_b4844b7455ebcbeefa4b6675276b00c0 = UNSTREAM_STRING( &constant_bin[ 0 ], 98, 0 ); 79     const_str_digest_b4844b7455ebcbeefa4b6675276b00c0 = UNSTREAM_STRING( &constant_bin[ 0 ], 98, 0 );
n 91     const_str_plain_to = UNSTREAM_STRING( &constant_bin[ 98 ], 2, 1 ); n
92     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 68 ], 1, 1 ); 80     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 68 ], 1, 1 );
n 93     const_str_plain_metaclass = UNSTREAM_STRING( &constant_bin[ 100 ], 9, 1 ); n 81     const_str_plain_metaclass = UNSTREAM_STRING( &constant_bin[ 98 ], 9, 1 );
94     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 109 ], 11, 1 ); 82     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 107 ], 11, 1 );
95     const_str_plain_compiled_method = UNSTREAM_STRING( &constant_bin[ 120 ], 15, 1 ); 83     const_str_plain_compiled_method = UNSTREAM_STRING( &constant_bin[ 118 ], 15, 1 );
96     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING( &constant_bin[ 135 ], 17, 0 ); 84     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING( &constant_bin[ 133 ], 17, 0 );
97     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 );
98     const_str_plain_some = UNSTREAM_STRING( &constant_bin[ 152 ], 4, 1 );
99     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
100     const_str_plain_new = UNSTREAM_STRING( &constant_bin[ 156 ], 3, 1 );
101     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
102     const_str_plain_values = UNSTREAM_STRING( &constant_bin[ 159 ], 6, 1 );
103     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
104     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
105     const_str_plain_check = UNSTREAM_STRING( &constant_bin[ 165 ], 5, 1 );
106     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
107     const_str_plain_call = UNSTREAM_STRING( &constant_bin[ 170 ], 4, 1 );
108     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
109     const_str_plain___qualname__ = UNSTREAM_STRING( &constant_bin[ 174 ], 12, 1 ); 85     const_str_plain___qualname__ = UNSTREAM_STRING( &constant_bin[ 150 ], 12, 1 );
110     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 186 ], 1, 1 ); 86     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 162 ], 1, 1 );
111     const_str_plain_object = UNSTREAM_STRING( &constant_bin[ 187 ], 6, 1 ); 87     const_str_plain_object = UNSTREAM_STRING( &constant_bin[ 163 ], 6, 1 );
112     const_str_plain_other = UNSTREAM_STRING( &constant_bin[ 193 ], 5, 1 );
113     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 88     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
114     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 ); 89     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 );
n 115     const_str_plain___prepare__ = UNSTREAM_STRING( &constant_bin[ 198 ], 11, 1 ); n 90     const_str_plain___prepare__ = UNSTREAM_STRING( &constant_bin[ 169 ], 11, 1 );
116     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 ); 91     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 );
117     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 92     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 118     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 209 ], 3, 0 ); n 93     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 180 ], 3, 0 );
119     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 94     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 120     const_str_plain_random = UNSTREAM_STRING( &constant_bin[ 212 ], 6, 1 ); n
121     const_str_plain_self = UNSTREAM_STRING( &constant_bin[ 218 ], 4, 1 ); 95     const_str_plain_self = UNSTREAM_STRING( &constant_bin[ 183 ], 4, 1 );
122     const_str_plain_inst = UNSTREAM_STRING( &constant_bin[ 222 ], 4, 1 ); 96     const_str_plain_inst = UNSTREAM_STRING( &constant_bin[ 187 ], 4, 1 );
123     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 17 ], 1, 1 ); 97     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 17 ], 1, 1 );
n 124     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 226 ], 16, 1 ); n 98     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 191 ], 16, 1 );
125     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 242 ], 8, 0 ); 99     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 207 ], 8, 0 );
126     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 ); 100     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 );
127     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self ); 101     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self );
128     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 102     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a );
129     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 103     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b );
130     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 35 ], 1, 1 ); 104     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 35 ], 1, 1 );
135     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 109     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f );
136     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 25 ], 1, 1 ); 110     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 25 ], 1, 1 );
137     const_str_plain_C = UNSTREAM_STRING( &constant_bin[ 55 ], 1, 1 ); 111     const_str_plain_C = UNSTREAM_STRING( &constant_bin[ 55 ], 1, 1 );
138     const_tuple_str_plain_inst_tuple = PyTuple_New( 1 ); 112     const_tuple_str_plain_inst_tuple = PyTuple_New( 1 );
139     PyTuple_SET_ITEM( const_tuple_str_plain_inst_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst ); 113     PyTuple_SET_ITEM( const_tuple_str_plain_inst_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst );
n 140     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 ); n
141     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
142     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
143     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
144     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
145     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
146     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
147     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
148     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
149     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
150     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
151     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
152     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
153     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
154 114
155     constants_created = true; 115     constants_created = true;
156 } 116 }
157 117
158 #ifndef __NUITKA_NO_ASSERT__ 118 #ifndef __NUITKA_NO_ASSERT__
503     PyObject *exception_keeper_type_1; 463     PyObject *exception_keeper_type_1;
504     PyObject *exception_keeper_value_1; 464     PyObject *exception_keeper_value_1;
505     PyTracebackObject *exception_keeper_tb_1; 465     PyTracebackObject *exception_keeper_tb_1;
506     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 466     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
507     PyObject *tmp_assign_source_1; 467     PyObject *tmp_assign_source_1;
n 508     PyObject *tmp_called_instance_1; n
509     PyObject *tmp_called_instance_2;
510     PyObject *tmp_called_instance_3;
511     PyObject *tmp_called_name_1; 468     PyObject *tmp_called_name_1;
512     PyObject *tmp_frame_locals; 469     PyObject *tmp_frame_locals;
513     PyObject *tmp_return_value; 470     PyObject *tmp_return_value;
n 514     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused; n
515     static PyFrameObject *cache_frame_function = NULL; 471     static PyFrameObject *cache_frame_function = NULL;
516 472
517     PyFrameObject *frame_function; 473     PyFrameObject *frame_function;
518 474
519     tmp_return_value = NULL; 475     tmp_return_value = NULL;
569         goto frame_exception_exit_1; 525         goto frame_exception_exit_1;
570     } 526     }
571     assert( var_inst == NULL ); 527     assert( var_inst == NULL );
572     var_inst = tmp_assign_source_1; 528     var_inst = tmp_assign_source_1;
573 529
n 574     tmp_called_instance_1 = var_inst; n
575  
576     frame_function->f_lineno = 32;
577     tmp_unused = CALL_METHOD_WITH_ARGS6( tmp_called_instance_1, const_str_plain_compiled_method, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
578  
579     if ( tmp_unused == NULL )
580     {
581         assert( ERROR_OCCURRED() );
582  
583         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
584  
585  
586         exception_lineno = 32;
587         goto frame_exception_exit_1;
588     }
589     Py_DECREF( tmp_unused );
590     tmp_called_instance_2 = var_inst;
591  
592     if ( tmp_called_instance_2 == NULL )
593     {
594  
595         exception_type = PyExc_UnboundLocalError;
596         Py_INCREF( exception_type );
597         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
598         exception_tb = NULL;
599         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
600         CHAIN_EXCEPTION( exception_value );
601  
602         exception_lineno = 33;
603         goto frame_exception_exit_1;
604     }
605  
606     frame_function->f_lineno = 33;
607     tmp_unused = CALL_METHOD_WITH_ARGS6( tmp_called_instance_2, const_str_plain_compiled_method, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
608  
609     if ( tmp_unused == NULL )
610     {
611         assert( ERROR_OCCURRED() );
612  
613         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
614  
615  
616         exception_lineno = 33;
617         goto frame_exception_exit_1;
618     }
619     Py_DECREF( tmp_unused );
620     tmp_called_instance_3 = var_inst;
621  
622     if ( tmp_called_instance_3 == NULL )
623     {
624  
625         exception_type = PyExc_UnboundLocalError;
626         Py_INCREF( exception_type );
627         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
628         exception_tb = NULL;
629         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
630         CHAIN_EXCEPTION( exception_value );
631  
632         exception_lineno = 34;
633         goto frame_exception_exit_1;
634     }
635  
636     frame_function->f_lineno = 34;
637     tmp_unused = CALL_METHOD_WITH_ARGS6( tmp_called_instance_3, const_str_plain_compiled_method, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
638  
639     if ( tmp_unused == NULL )
640     {
641         assert( ERROR_OCCURRED() );
642  
643         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
644  
645  
646         exception_lineno = 34;
647         goto frame_exception_exit_1;
648     }
649     Py_DECREF( tmp_unused );
650 530
651 #if 0 531 #if 0
652     RESTORE_FRAME_EXCEPTION( frame_function ); 532     RESTORE_FRAME_EXCEPTION( frame_function );
653 #endif 533 #endif
654     // Put the previous frame back on top. 534     // Put the previous frame back on top.
720     // tried codes exits in all cases 600     // tried codes exits in all cases
721     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 601     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
722     return NULL; 602     return NULL;
723     // Return handler code: 603     // Return handler code:
724     try_return_handler_1:; 604     try_return_handler_1:;
n n 605     CHECK_OBJECT( (PyObject *)var_inst );
725     Py_XDECREF( var_inst ); 606     Py_DECREF( var_inst );
726     var_inst = NULL; 607     var_inst = NULL;
727 608
728     goto function_return_exit; 609     goto function_return_exit;
729     // Exception handler code: 610     // Exception handler code:
730     try_except_handler_1:; 611     try_except_handler_1:;
734     exception_keeper_lineno_1 = exception_lineno; 615     exception_keeper_lineno_1 = exception_lineno;
735     exception_type = NULL; 616     exception_type = NULL;
736     exception_value = NULL; 617     exception_value = NULL;
737     exception_tb = NULL; 618     exception_tb = NULL;
738     exception_lineno = -1; 619     exception_lineno = -1;
t 739   t
740     Py_XDECREF( var_inst );
741     var_inst = NULL;
742 620
743     // Re-raise. 621     // Re-raise.
744     exception_type = exception_keeper_type_1; 622     exception_type = exception_keeper_type_1;
745     exception_value = exception_keeper_value_1; 623     exception_value = exception_keeper_value_1;
746     exception_tb = exception_keeper_tb_1; 624     exception_tb = exception_keeper_tb_1;