Construct CallUncompiledFunctionPosArgs

Performance Diagrams

Construct CallUncompiledFunctionPosArgs 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)16133886688.11538461538461257.0CPython 2.7107441223240.03846153846155339.5525622561875Nuitka (master)107440711391.96153846153845339.5533464632423Nuitka (develop)107440117543.8846153846154339.5542562659581Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks Construct CallUncompiledFunctionPosArgs 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000120000000120000000130000000130000000140000000140000000150000000150000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)15128366988.11538461538461257.0CPython 3.5100407331240.03846153846155340.10431598993216Nuitka (master)100424919391.96153846153845340.07558674629774Nuitka (develop)100425914543.8846153846154340.0739614564742Nuitka (factory)Construct CallUncompiledFunctionPosArgsTicks

Source Code with Construct

from __future__ import print_function

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

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



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

print("OK.")

Source Code without Construct

from __future__ import print_function

exec("""
def python_func(a,b,c,d,e,f):
    pass
""")

def calledRepeatedly():
    # 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
26 26
27 def calledRepeatedly(): 27 def calledRepeatedly():
28     # This is supposed to make a call to a non-compiled function, which is 28     # This is supposed to make a call to a non-compiled function, which is
29     # being optimized separately. 29     # being optimized separately.
30 # construct_begin 30 # construct_begin
n 31     python_func("some", "random", "values", "to", "check", "call") n
32     python_func("some", "other", "values", "to", "check", "call")
33     python_func("some", "new", "values", "to", "check", "call")
34 # construct_alternative
35 31
36 32
t t 33  
34 # construct_alternative
35     pass
36 # construct_end
37 37
38 import itertools 38 import itertools
39 for x in itertools.repeat(None, 50000): 39 for x in itertools.repeat(None, 50000):
40     calledRepeatedly() 40     calledRepeatedly()
41 41

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_itertools; 34 static PyObject *const_str_plain_itertools;
36 static PyObject *const_str_plain___package__; 35 static PyObject *const_str_plain___package__;
37 static PyObject *const_str_plain___spec__; 36 static PyObject *const_str_plain___spec__;
38 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d; 37 static PyObject *const_str_digest_40641b58ed6f61cc974b85218932eb8d;
n 39 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
40 static PyObject *const_str_plain_values;
41 extern PyObject *const_dict_empty; 38 extern PyObject *const_dict_empty;
42 extern PyObject *const_str_plain___file__; 39 extern PyObject *const_str_plain___file__;
n 43 static PyObject *const_str_plain_other; n
44 extern PyObject *const_int_0; 40 extern PyObject *const_int_0;
n 45 static PyObject *const_str_plain_check; n
46 extern PyObject *const_str_plain_print; 41 extern PyObject *const_str_plain_print;
n 47 static PyObject *const_str_plain_call; n
48 static PyObject *const_int_pos_50000; 42 static PyObject *const_int_pos_50000;
49 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 43 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 50 static PyObject *const_str_plain_random; n
51 static PyObject *const_str_plain_print_function; 44 static PyObject *const_str_plain_print_function;
52 static PyObject *const_str_plain_calledRepeatedly; 45 static PyObject *const_str_plain_calledRepeatedly;
53 static PyObject *const_str_angle_module; 46 static PyObject *const_str_angle_module;
54 static PyObject *const_str_plain_x; 47 static PyObject *const_str_plain_x;
55 extern PyObject *const_tuple_empty; 48 extern PyObject *const_tuple_empty;
56 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 49 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 57 static PyObject *const_str_plain_python_func; n
58 static PyObject *const_str_plain_some;
59 static PyObject *const_str_plain_repeat; 50 static PyObject *const_str_plain_repeat;
n 60 static PyObject *const_str_plain_new; n
61 static PyObject *const_tuple_none_int_pos_50000_tuple; 51 static PyObject *const_tuple_none_int_pos_50000_tuple;
62 extern PyObject *const_str_plain___loader__; 52 extern PyObject *const_str_plain___loader__;
63 static PyObject *const_str_digest_72e8e6851d77d7be01aaf92a2385430b; 53 static PyObject *const_str_digest_72e8e6851d77d7be01aaf92a2385430b;
n 64 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
65 extern PyObject *const_str_plain___main__; 54 extern PyObject *const_str_plain___main__;
66 static PyObject *const_str_angle_string; 55 static PyObject *const_str_angle_string;
n 67 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple; n
68 extern PyObject *const_str_plain___doc__; 56 extern PyObject *const_str_plain___doc__;
69 extern PyObject *const_str_plain___cached__; 57 extern PyObject *const_str_plain___cached__;
70 static PyObject *const_str_plain_exec; 58 static PyObject *const_str_plain_exec;
71 static PyObject *module_filename_obj; 59 static PyObject *module_filename_obj;
72 60
73 static bool constants_created = false; 61 static bool constants_created = false;
74 62
75 static void createModuleConstants( void ) 63 static void createModuleConstants( void )
76 { 64 {
n 77     const_str_plain_to = UNSTREAM_STRING( &constant_bin[ 0 ], 2, 1 ); n
78     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 2 ], 9, 1 ); 65     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 0 ], 9, 1 );
79     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 11 ], 11, 1 ); 66     const_str_plain___package__ = UNSTREAM_STRING( &constant_bin[ 9 ], 11, 1 );
80     const_str_plain___spec__ = UNSTREAM_STRING( &constant_bin[ 22 ], 8, 1 ); 67     const_str_plain___spec__ = UNSTREAM_STRING( &constant_bin[ 20 ], 8, 1 );
81     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING( &constant_bin[ 30 ], 40, 0 ); 68     const_str_digest_40641b58ed6f61cc974b85218932eb8d = UNSTREAM_STRING( &constant_bin[ 28 ], 40, 0 );
82     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 );
83     const_str_plain_some = UNSTREAM_STRING( &constant_bin[ 70 ], 4, 1 );
84     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
85     const_str_plain_new = UNSTREAM_STRING( &constant_bin[ 74 ], 3, 1 );
86     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
87     const_str_plain_values = UNSTREAM_STRING( &constant_bin[ 77 ], 6, 1 );
88     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
89     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
90     const_str_plain_check = UNSTREAM_STRING( &constant_bin[ 83 ], 5, 1 );
91     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
92     const_str_plain_call = UNSTREAM_STRING( &constant_bin[ 88 ], 4, 1 );
93     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
94     const_str_plain_other = UNSTREAM_STRING( &constant_bin[ 92 ], 5, 1 );
95     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 69     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
96     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 70     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 97     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 97 ], 3, 0 ); n 71     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 68 ], 3, 0 );
98     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 72     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 99     const_str_plain_random = UNSTREAM_STRING( &constant_bin[ 100 ], 6, 1 ); n
100     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 106 ], 14, 1 ); 73     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 71 ], 14, 1 );
101     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 120 ], 16, 1 ); 74     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 85 ], 16, 1 );
102     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 136 ], 8, 0 ); 75     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 101 ], 8, 0 );
103     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 144 ], 1, 1 ); 76     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 109 ], 1, 1 );
104     const_str_plain_python_func = UNSTREAM_STRING( &constant_bin[ 35 ], 11, 1 );
105     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 145 ], 6, 1 ); 77     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 110 ], 6, 1 );
106     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 78     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
107     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 79     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
108     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 80     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
n 109     const_str_digest_72e8e6851d77d7be01aaf92a2385430b = UNSTREAM_STRING( &constant_bin[ 151 ], 87, 0 ); n 81     const_str_digest_72e8e6851d77d7be01aaf92a2385430b = UNSTREAM_STRING( &constant_bin[ 116 ], 87, 0 );
110     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 );
111     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
112     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
113     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
114     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
115     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
116     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
117     const_str_angle_string = UNSTREAM_STRING( &constant_bin[ 238 ], 8, 0 ); 82     const_str_angle_string = UNSTREAM_STRING( &constant_bin[ 203 ], 8, 0 );
118     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
119     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
120     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
121     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
122     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
123     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
124     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
125     const_str_plain_exec = UNSTREAM_STRING( &constant_bin[ 246 ], 4, 1 ); 83     const_str_plain_exec = UNSTREAM_STRING( &constant_bin[ 211 ], 4, 1 );
126 84
127     constants_created = true; 85     constants_created = true;
128 } 86 }
129 87
130 #ifndef __NUITKA_NO_ASSERT__ 88 #ifndef __NUITKA_NO_ASSERT__
137 } 95 }
138 #endif 96 #endif
139 97
140 // The module code objects. 98 // The module code objects.
141 static PyCodeObject *codeobj_4243b061ce9558b79575cad182925a7f; 99 static PyCodeObject *codeobj_4243b061ce9558b79575cad182925a7f;
n 142 static PyCodeObject *codeobj_6460a24a2b02a8502791a9214729d2bc; n 100 static PyCodeObject *codeobj_f22863d96c5f047d3a25ba8dda27db3b;
143 /* For use in "MainProgram.c". */ 101 /* For use in "MainProgram.c". */
144 PyCodeObject *codeobj_main = NULL; 102 PyCodeObject *codeobj_main = NULL;
145 103
146 static void createModuleCodeObjects(void) 104 static void createModuleCodeObjects(void)
147 { 105 {
148     module_filename_obj = const_str_digest_72e8e6851d77d7be01aaf92a2385430b; 106     module_filename_obj = const_str_digest_72e8e6851d77d7be01aaf92a2385430b;
149     codeobj_4243b061ce9558b79575cad182925a7f = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 107     codeobj_4243b061ce9558b79575cad182925a7f = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
150     codeobj_main = codeobj_4243b061ce9558b79575cad182925a7f; 108     codeobj_main = codeobj_4243b061ce9558b79575cad182925a7f;
n 151     codeobj_6460a24a2b02a8502791a9214729d2bc = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 109     codeobj_f22863d96c5f047d3a25ba8dda27db3b = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 27, const_tuple_empty, 0, 0, CO_NOFREE );
152 } 110 }
153 111
154 // The module function declarations. 112 // The module function declarations.
155 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  ); 113 static PyObject *MAKE_FUNCTION___main__$$$function_1_calledRepeatedly(  );
156 114
162 #ifndef __NUITKA_NO_ASSERT__ 120 #ifndef __NUITKA_NO_ASSERT__
163     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 121     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
164 #endif 122 #endif
165 123
166     // Local variable declarations. 124     // Local variable declarations.
n 167     PyObject *exception_type = NULL; n
168     PyObject *exception_value = NULL;
169     PyTracebackObject *exception_tb = NULL;
170     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
171     PyObject *tmp_called_name_1;
172     PyObject *tmp_called_name_2;
173     PyObject *tmp_called_name_3;
174     PyObject *tmp_return_value; 125     PyObject *tmp_return_value;
n 175     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused; n
176     static struct Nuitka_FrameObject *cache_frame_6460a24a2b02a8502791a9214729d2bc = NULL;
177  
178     struct Nuitka_FrameObject *frame_6460a24a2b02a8502791a9214729d2bc;
179  
180     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
181     tmp_return_value = NULL; 126     tmp_return_value = NULL;
182 127
183     // Actual function code. 128     // Actual function code.
n 184     MAKE_OR_REUSE_FRAME( cache_frame_6460a24a2b02a8502791a9214729d2bc, codeobj_6460a24a2b02a8502791a9214729d2bc, module___main__, 0 ); n
185     frame_6460a24a2b02a8502791a9214729d2bc = cache_frame_6460a24a2b02a8502791a9214729d2bc;
186  
187     // Push the new frame as the currently active one.
188     pushFrameStack( frame_6460a24a2b02a8502791a9214729d2bc );
189  
190     // Mark the frame object as in use, ref count 1 will be up for reuse.
191     assert( Py_REFCNT( frame_6460a24a2b02a8502791a9214729d2bc ) == 2 ); // Frame stack
192  
193     // Framed code:
194     tmp_called_name_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func );
195  
196     if (unlikely( tmp_called_name_1 == NULL ))
197     {
198         tmp_called_name_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func );
199     }
200  
201     if ( tmp_called_name_1 == NULL )
202     {
203  
204         exception_type = PyExc_NameError;
205         Py_INCREF( exception_type );
206         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "python_func" );
207         exception_tb = NULL;
208         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
209         CHAIN_EXCEPTION( exception_value );
210  
211         exception_lineno = 31;
212  
213         goto frame_exception_exit_1;
214     }
215  
216     frame_6460a24a2b02a8502791a9214729d2bc->m_frame.f_lineno = 31;
217     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
218  
219     if ( tmp_unused == NULL )
220     {
221         assert( ERROR_OCCURRED() );
222  
223         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
224  
225  
226         exception_lineno = 31;
227  
228         goto frame_exception_exit_1;
229     }
230     Py_DECREF( tmp_unused );
231     tmp_called_name_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func );
232  
233     if (unlikely( tmp_called_name_2 == NULL ))
234     {
235         tmp_called_name_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func );
236     }
237  
238     if ( tmp_called_name_2 == NULL )
239     {
240  
241         exception_type = PyExc_NameError;
242         Py_INCREF( exception_type );
243         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "python_func" );
244         exception_tb = NULL;
245         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
246         CHAIN_EXCEPTION( exception_value );
247  
248         exception_lineno = 32;
249  
250         goto frame_exception_exit_1;
251     }
252  
253     frame_6460a24a2b02a8502791a9214729d2bc->m_frame.f_lineno = 32;
254     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
255  
256     if ( tmp_unused == NULL )
257     {
258         assert( ERROR_OCCURRED() );
259  
260         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
261  
262  
263         exception_lineno = 32;
264  
265         goto frame_exception_exit_1;
266     }
267     Py_DECREF( tmp_unused );
268     tmp_called_name_3 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_python_func );
269  
270     if (unlikely( tmp_called_name_3 == NULL ))
271     {
272         tmp_called_name_3 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_python_func );
273     }
274  
275     if ( tmp_called_name_3 == NULL )
276     {
277  
278         exception_type = PyExc_NameError;
279         Py_INCREF( exception_type );
280         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "python_func" );
281         exception_tb = NULL;
282         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
283         CHAIN_EXCEPTION( exception_value );
284  
285         exception_lineno = 33;
286  
287         goto frame_exception_exit_1;
288     }
289  
290     frame_6460a24a2b02a8502791a9214729d2bc->m_frame.f_lineno = 33;
291     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
292  
293     if ( tmp_unused == NULL )
294     {
295         assert( ERROR_OCCURRED() );
296  
297         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
298  
299  
300         exception_lineno = 33;
301  
302         goto frame_exception_exit_1;
303     }
304     Py_DECREF( tmp_unused );
305  
306 #if 0
307     RESTORE_FRAME_EXCEPTION( frame_6460a24a2b02a8502791a9214729d2bc );
308 #endif
309  
310     // Put the previous frame back on top.
311     popFrameStack();
312  
313     goto frame_no_exception_1;
314  
315     frame_exception_exit_1:;
316  
317 #if 0
318     RESTORE_FRAME_EXCEPTION( frame_6460a24a2b02a8502791a9214729d2bc );
319 #endif
320  
321     if ( exception_tb == NULL )
322     {
323         exception_tb = MAKE_TRACEBACK( frame_6460a24a2b02a8502791a9214729d2bc, exception_lineno );
324     }
325     else if ( exception_tb->tb_frame != &frame_6460a24a2b02a8502791a9214729d2bc->m_frame )
326     {
327         exception_tb = ADD_TRACEBACK( exception_tb, frame_6460a24a2b02a8502791a9214729d2bc, exception_lineno );
328     }
329  
330     // Attachs locals to frame if any.
331     Nuitka_Frame_AttachLocals(
332         (struct Nuitka_FrameObject *)frame_6460a24a2b02a8502791a9214729d2bc,
333         type_description_1
334     );
335  
336  
337     // Release cached frame.
338     if ( frame_6460a24a2b02a8502791a9214729d2bc == cache_frame_6460a24a2b02a8502791a9214729d2bc )
339     {
340         Py_DECREF( frame_6460a24a2b02a8502791a9214729d2bc );
341     }
342     cache_frame_6460a24a2b02a8502791a9214729d2bc = NULL;
343  
344     assertFrameObject( frame_6460a24a2b02a8502791a9214729d2bc );
345  
346     // Put the previous frame back on top.
347     popFrameStack();
348  
349     // Return the error.
350     goto function_exception_exit;
351  
352     frame_no_exception_1:;
353  
354     tmp_return_value = Py_None; 129     tmp_return_value = Py_None;
355     Py_INCREF( tmp_return_value ); 130     Py_INCREF( tmp_return_value );
356     goto function_return_exit; 131     goto function_return_exit;
357 132
358     // Return statement must have exited already. 133     // Return statement must have exited already.
359     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly ); 134     NUITKA_CANNOT_GET_HERE( __main__$$$function_1_calledRepeatedly );
360     return NULL; 135     return NULL;
361 136
n 362 function_exception_exit: n
363     assert( exception_type );
364     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
365  
366     return NULL;
367     function_return_exit: 137     function_return_exit:
368 138
369     CHECK_OBJECT( tmp_return_value ); 139     CHECK_OBJECT( tmp_return_value );
370     assert( had_error || !ERROR_OCCURRED() ); 140     assert( had_error || !ERROR_OCCURRED() );
371     return tmp_return_value; 141     return tmp_return_value;
380         impl___main__$$$function_1_calledRepeatedly, 150         impl___main__$$$function_1_calledRepeatedly,
381         const_str_plain_calledRepeatedly, 151         const_str_plain_calledRepeatedly,
382 #if PYTHON_VERSION >= 330 152 #if PYTHON_VERSION >= 330
383         NULL, 153         NULL,
384 #endif 154 #endif
t 385         codeobj_6460a24a2b02a8502791a9214729d2bc, t 155         codeobj_f22863d96c5f047d3a25ba8dda27db3b,
386         NULL, 156         NULL,
387 #if PYTHON_VERSION >= 300 157 #if PYTHON_VERSION >= 300
388         NULL, 158         NULL,
389         const_dict_empty, 159         const_dict_empty,
390 #endif 160 #endif