Construct CallCompiledMethodPosArgsConstant6

Performance Diagrams

Construct CallCompiledMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000CPython 2.7Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)24123034872.9230769230769257.0CPython 2.7103004273194.46153846153845398.59822746473014Nuitka (historic)91256401316.0410.6326996269653Nuitka (master)91256395437.53846153846143410.63270577334083Nuitka (develop)81506011559.0769230769231420.6209593752786Nuitka (factory)Construct CallCompiledMethodPosArgsConstant6Ticks Construct CallCompiledMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 3.5Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)20825883372.9230769230769257.0CPython 3.50194.46153846153845504.11538461538464Nuitka (historic)85660066316.0402.4730203956195Nuitka (master)85675151437.53846153846143402.45512086394916Nuitka (develop)85676296559.0769230769231402.4537622319463Nuitka (factory)Construct CallCompiledMethodPosArgsConstant6Ticks

Source Code with Construct

from __future__ import print_function

class C:
    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:
    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
29 29
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. */
n 34 static PyObject *const_str_plain_to; n
35 static PyObject *const_str_plain_b; 34 static PyObject *const_str_plain_b;
36 extern PyObject *const_str_plain___module__; 35 extern PyObject *const_str_plain___module__;
37 static PyObject *const_str_plain_metaclass; 36 static PyObject *const_str_plain_metaclass;
38 static PyObject *const_str_plain___package__; 37 static PyObject *const_str_plain___package__;
39 static PyObject *const_str_plain_compiled_method; 38 static PyObject *const_str_plain_compiled_method;
40 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf; 39 static PyObject *const_str_digest_757227af6dac5c01686d3bbc7671f8bf;
n 41 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
42 static PyObject *const_str_plain___qualname__; 40 static PyObject *const_str_plain___qualname__;
43 static PyObject *const_str_plain_f; 41 static PyObject *const_str_plain_f;
n 44 static PyObject *const_str_plain_values; n 42 extern PyObject *const_int_pos_1;
45 extern PyObject *const_dict_empty; 43 extern PyObject *const_dict_empty;
n 46 extern PyObject *const_int_pos_1; n
47 extern PyObject *const_str_plain___file__; 44 extern PyObject *const_str_plain___file__;
n 48 static PyObject *const_str_plain_other; n
49 extern PyObject *const_int_0; 45 extern PyObject *const_int_0;
n 50 static PyObject *const_str_plain_check; n
51 static PyObject *const_xrange_0_50000; 46 static PyObject *const_xrange_0_50000;
52 extern PyObject *const_str_plain_print; 47 extern PyObject *const_str_plain_print;
53 static PyObject *const_str_plain___prepare__; 48 static PyObject *const_str_plain___prepare__;
54 static PyObject *const_str_plain_a; 49 static PyObject *const_str_plain_a;
n 55 static PyObject *const_str_plain_call; n
56 static PyObject *const_int_pos_50000; 50 static PyObject *const_int_pos_50000;
57 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 51 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 58 static PyObject *const_str_plain_random; n
59 static PyObject *const_str_plain_self; 52 static PyObject *const_str_plain_self;
60 static PyObject *const_str_plain_inst; 53 static PyObject *const_str_plain_inst;
61 static PyObject *const_str_plain_e; 54 static PyObject *const_str_plain_e;
62 static PyObject *const_str_plain_calledRepeatedly; 55 static PyObject *const_str_plain_calledRepeatedly;
63 static PyObject *const_str_angle_module; 56 static PyObject *const_str_angle_module;
66 extern PyObject *const_tuple_empty; 59 extern PyObject *const_tuple_empty;
67 static PyObject *const_str_plain_C; 60 static PyObject *const_str_plain_C;
68 static PyObject *const_str_plain_c; 61 static PyObject *const_str_plain_c;
69 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 62 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
70 static PyObject *const_tuple_str_plain_inst_tuple; 63 static PyObject *const_tuple_str_plain_inst_tuple;
n 71 static PyObject *const_str_plain_some; n
72 static PyObject *const_str_plain_new;
73 static PyObject *const_str_digest_63a338efbb6a357576216fbbaf0efc48; 64 static PyObject *const_str_digest_63a338efbb6a357576216fbbaf0efc48;
74 extern PyObject *const_str_plain___loader__; 65 extern PyObject *const_str_plain___loader__;
75 extern PyObject *const_str_plain___main__; 66 extern PyObject *const_str_plain___main__;
76 extern PyObject *const_str_plain_type; 67 extern PyObject *const_str_plain_type;
n 77 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
78 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
79 static PyObject *const_str_plain_d; 68 static PyObject *const_str_plain_d;
80 extern PyObject *const_str_plain___doc__; 69 extern PyObject *const_str_plain___doc__;
81 extern PyObject *const_str_plain___cached__; 70 extern PyObject *const_str_plain___cached__;
82 extern PyObject *const_str_plain___class__; 71 extern PyObject *const_str_plain___class__;
83 static PyObject *module_filename_obj; 72 static PyObject *module_filename_obj;
84 73
85 static bool constants_created = false; 74 static bool constants_created = false;
86 75
87 static void createModuleConstants( void ) 76 static void createModuleConstants( void )
88 { 77 {
n 89     const_str_plain_to = UNSTREAM_STRING( &constant_bin[ 0 ], 2, 1 ); n
90     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 ); 78     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 0 ], 1, 1 );
91     const_str_plain_metaclass = UNSTREAM_STRING( &constant_bin[ 3 ], 9, 1 ); 79     const_str_plain_metaclass = UNSTREAM_STRING( &constant_bin[ 1 ], 9, 1 );
92     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 12 ], 11, 1 ); 80     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 10 ], 11, 1 );
93     const_str_plain_compiled_method = UNSTREAM_STRING( &constant_bin[ 23 ], 15, 1 ); 81     const_str_plain_compiled_method = UNSTREAM_STRING( &constant_bin[ 21 ], 15, 1 );
94     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING( &constant_bin[ 38 ], 17, 0 ); 82     const_str_digest_757227af6dac5c01686d3bbc7671f8bf = UNSTREAM_STRING( &constant_bin[ 36 ], 17, 0 );
95     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 );
96     const_str_plain_some = UNSTREAM_STRING( &constant_bin[ 55 ], 4, 1 );
97     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
98     const_str_plain_new = UNSTREAM_STRING( &constant_bin[ 59 ], 3, 1 );
99     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
100     const_str_plain_values = UNSTREAM_STRING( &constant_bin[ 62 ], 6, 1 );
101     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
102     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
103     const_str_plain_check = UNSTREAM_STRING( &constant_bin[ 68 ], 5, 1 );
104     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
105     const_str_plain_call = UNSTREAM_STRING( &constant_bin[ 73 ], 4, 1 );
106     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
107     const_str_plain___qualname__ = UNSTREAM_STRING( &constant_bin[ 77 ], 12, 1 ); 83     const_str_plain___qualname__ = UNSTREAM_STRING( &constant_bin[ 53 ], 12, 1 );
108     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 89 ], 1, 1 ); 84     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 65 ], 1, 1 );
109     const_str_plain_other = UNSTREAM_STRING( &constant_bin[ 90 ], 5, 1 );
110     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 85     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
111     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 ); 86     const_xrange_0_50000 = BUILTIN_XRANGE3( const_int_0, const_int_pos_50000, const_int_pos_1 );
n 112     const_str_plain___prepare__ = UNSTREAM_STRING( &constant_bin[ 95 ], 11, 1 ); n 87     const_str_plain___prepare__ = UNSTREAM_STRING( &constant_bin[ 66 ], 11, 1 );
113     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 6 ], 1, 1 ); 88     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 4 ], 1, 1 );
114     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 89     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 115     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 106 ], 3, 0 ); n 90     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 77 ], 3, 0 );
116     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 91     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 117     const_str_plain_random = UNSTREAM_STRING( &constant_bin[ 109 ], 6, 1 ); n
118     const_str_plain_self = UNSTREAM_STRING( &constant_bin[ 115 ], 4, 1 ); 92     const_str_plain_self = UNSTREAM_STRING( &constant_bin[ 80 ], 4, 1 );
119     const_str_plain_inst = UNSTREAM_STRING( &constant_bin[ 119 ], 4, 1 ); 93     const_str_plain_inst = UNSTREAM_STRING( &constant_bin[ 84 ], 4, 1 );
120     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 4 ], 1, 1 ); 94     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 );
121     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 123 ], 16, 1 ); 95     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 88 ], 16, 1 );
122     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 139 ], 8, 0 ); 96     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 104 ], 8, 0 );
123     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 ); 97     const_tuple_ba58284e993f645f647ff630deb3d552_tuple = PyTuple_New( 7 );
124     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self ); 98     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 0, const_str_plain_self ); Py_INCREF( const_str_plain_self );
125     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 99     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 1, const_str_plain_a ); Py_INCREF( const_str_plain_a );
126     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 100     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 2, const_str_plain_b ); Py_INCREF( const_str_plain_b );
n 127     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 7 ], 1, 1 ); n 101     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 5 ], 1, 1 );
128     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 3, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 102     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 3, const_str_plain_c ); Py_INCREF( const_str_plain_c );
n 129     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 30 ], 1, 1 ); n 103     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 28 ], 1, 1 );
130     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 4, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 104     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 4, const_str_plain_d ); Py_INCREF( const_str_plain_d );
131     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 5, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 105     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 5, const_str_plain_e ); Py_INCREF( const_str_plain_e );
132     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 106     PyTuple_SET_ITEM( const_tuple_ba58284e993f645f647ff630deb3d552_tuple, 6, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 133     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 147 ], 1, 1 ); n 107     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 112 ], 1, 1 );
134     const_str_plain_C = UNSTREAM_STRING( &constant_bin[ 38 ], 1, 1 ); 108     const_str_plain_C = UNSTREAM_STRING( &constant_bin[ 36 ], 1, 1 );
135     const_tuple_str_plain_inst_tuple = PyTuple_New( 1 ); 109     const_tuple_str_plain_inst_tuple = PyTuple_New( 1 );
136     PyTuple_SET_ITEM( const_tuple_str_plain_inst_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst ); 110     PyTuple_SET_ITEM( const_tuple_str_plain_inst_tuple, 0, const_str_plain_inst ); Py_INCREF( const_str_plain_inst );
n 137     const_str_digest_63a338efbb6a357576216fbbaf0efc48 = UNSTREAM_STRING( &constant_bin[ 148 ], 66, 0 ); n 111     const_str_digest_63a338efbb6a357576216fbbaf0efc48 = UNSTREAM_STRING( &constant_bin[ 113 ], 66, 0 );
138     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 );
139     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
140     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
141     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
142     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
143     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
144     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
145     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
146     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
147     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
148     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
149     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
150     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
151     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
152 112
153     constants_created = true; 113     constants_created = true;
154 } 114 }
155 115
156 #ifndef __NUITKA_NO_ASSERT__ 116 #ifndef __NUITKA_NO_ASSERT__
502     PyObject *exception_keeper_value_1; 462     PyObject *exception_keeper_value_1;
503     PyTracebackObject *exception_keeper_tb_1; 463     PyTracebackObject *exception_keeper_tb_1;
504     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 464     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
505     PyObject *tmp_assign_source_1; 465     PyObject *tmp_assign_source_1;
506     PyObject *tmp_called_name_1; 466     PyObject *tmp_called_name_1;
n 507     PyObject *tmp_called_name_2; n
508     PyObject *tmp_called_name_3;
509     PyObject *tmp_called_name_4;
510     PyObject *tmp_frame_locals; 467     PyObject *tmp_frame_locals;
511     PyObject *tmp_return_value; 468     PyObject *tmp_return_value;
n 512     PyObject *tmp_source_name_1; n
513     PyObject *tmp_source_name_2;
514     PyObject *tmp_source_name_3;
515     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
516     static PyFrameObject *cache_frame_function = NULL; 469     static PyFrameObject *cache_frame_function = NULL;
517 470
518     PyFrameObject *frame_function; 471     PyFrameObject *frame_function;
519 472
520     tmp_return_value = NULL; 473     tmp_return_value = NULL;
570         goto frame_exception_exit_1; 523         goto frame_exception_exit_1;
571     } 524     }
572     assert( var_inst == NULL ); 525     assert( var_inst == NULL );
573     var_inst = tmp_assign_source_1; 526     var_inst = tmp_assign_source_1;
574 527
n 575     tmp_source_name_1 = var_inst; n
576  
577     tmp_called_name_2 = LOOKUP_ATTRIBUTE( tmp_source_name_1, const_str_plain_compiled_method );
578     if ( tmp_called_name_2 == NULL )
579     {
580         assert( ERROR_OCCURRED() );
581  
582         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
583  
584  
585         exception_lineno = 32;
586         goto frame_exception_exit_1;
587     }
588     frame_function->f_lineno = 32;
589     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
590  
591     Py_DECREF( tmp_called_name_2 );
592     if ( tmp_unused == NULL )
593     {
594         assert( ERROR_OCCURRED() );
595  
596         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
597  
598  
599         exception_lineno = 32;
600         goto frame_exception_exit_1;
601     }
602     Py_DECREF( tmp_unused );
603     tmp_source_name_2 = var_inst;
604  
605     if ( tmp_source_name_2 == NULL )
606     {
607  
608         exception_type = PyExc_UnboundLocalError;
609         Py_INCREF( exception_type );
610         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
611         exception_tb = NULL;
612         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
613         CHAIN_EXCEPTION( exception_value );
614  
615         exception_lineno = 33;
616         goto frame_exception_exit_1;
617     }
618  
619     tmp_called_name_3 = LOOKUP_ATTRIBUTE( tmp_source_name_2, const_str_plain_compiled_method );
620     if ( tmp_called_name_3 == NULL )
621     {
622         assert( ERROR_OCCURRED() );
623  
624         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
625  
626  
627         exception_lineno = 33;
628         goto frame_exception_exit_1;
629     }
630     frame_function->f_lineno = 33;
631     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
632  
633     Py_DECREF( tmp_called_name_3 );
634     if ( tmp_unused == NULL )
635     {
636         assert( ERROR_OCCURRED() );
637  
638         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
639  
640  
641         exception_lineno = 33;
642         goto frame_exception_exit_1;
643     }
644     Py_DECREF( tmp_unused );
645     tmp_source_name_3 = var_inst;
646  
647     if ( tmp_source_name_3 == NULL )
648     {
649  
650         exception_type = PyExc_UnboundLocalError;
651         Py_INCREF( exception_type );
652         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
653         exception_tb = NULL;
654         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
655         CHAIN_EXCEPTION( exception_value );
656  
657         exception_lineno = 34;
658         goto frame_exception_exit_1;
659     }
660  
661     tmp_called_name_4 = LOOKUP_ATTRIBUTE( tmp_source_name_3, const_str_plain_compiled_method );
662     if ( tmp_called_name_4 == NULL )
663     {
664         assert( ERROR_OCCURRED() );
665  
666         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
667  
668  
669         exception_lineno = 34;
670         goto frame_exception_exit_1;
671     }
672     frame_function->f_lineno = 34;
673     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_4, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
674  
675     Py_DECREF( tmp_called_name_4 );
676     if ( tmp_unused == NULL )
677     {
678         assert( ERROR_OCCURRED() );
679  
680         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
681  
682  
683         exception_lineno = 34;
684         goto frame_exception_exit_1;
685     }
686     Py_DECREF( tmp_unused );
687 528
688 #if 0 529 #if 0
689     RESTORE_FRAME_EXCEPTION( frame_function ); 530     RESTORE_FRAME_EXCEPTION( frame_function );
690 #endif 531 #endif
691     // Put the previous frame back on top. 532     // Put the previous frame back on top.
757     // tried codes exits in all cases 598     // tried codes exits in all cases
758     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 599     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
759     return NULL; 600     return NULL;
760     // Return handler code: 601     // Return handler code:
761     try_return_handler_1:; 602     try_return_handler_1:;
n n 603     CHECK_OBJECT( (PyObject *)var_inst );
762     Py_XDECREF( var_inst ); 604     Py_DECREF( var_inst );
763     var_inst = NULL; 605     var_inst = NULL;
764 606
765     goto function_return_exit; 607     goto function_return_exit;
766     // Exception handler code: 608     // Exception handler code:
767     try_except_handler_1:; 609     try_except_handler_1:;
771     exception_keeper_lineno_1 = exception_lineno; 613     exception_keeper_lineno_1 = exception_lineno;
772     exception_type = NULL; 614     exception_type = NULL;
773     exception_value = NULL; 615     exception_value = NULL;
774     exception_tb = NULL; 616     exception_tb = NULL;
775     exception_lineno = -1; 617     exception_lineno = -1;
t 776   t
777     Py_XDECREF( var_inst );
778     var_inst = NULL;
779 618
780     // Re-raise. 619     // Re-raise.
781     exception_type = exception_keeper_type_1; 620     exception_type = exception_keeper_type_1;
782     exception_value = exception_keeper_value_1; 621     exception_value = exception_keeper_value_1;
783     exception_tb = exception_keeper_tb_1; 622     exception_tb = exception_keeper_tb_1;