Construct CallCompiledFunctionPosArgsConstant

Performance Diagrams

Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)23908605488.11538461538461257.0CPython 2.761855410240.03846153846155440.1826575618347Nuitka (master)61855446391.96153846153845440.18262035283107Nuitka (develop)61855434543.8846153846154440.1826327558323Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks Construct CallCompiledFunctionPosArgsConstant 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000CPython 3.5Nuitka (master)Nuitka (develop)Nuitka (factory)22205770388.11538461538461257.0CPython 3.571260659240.03846153846155424.81345129433805Nuitka (master)71260815391.96153846153845424.813277690813Nuitka (develop)71257918543.8846153846154424.8165015973002Nuitka (factory)Construct CallCompiledFunctionPosArgsConstantTicks

Source Code with Construct

from __future__ import print_function

def compiled_func(a,b,c,d,e,f):
    return a, b, c, d, e, f

def calledRepeatedly():
    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    compiled_func("some", "random", "values", "to", "check", "call")
    compiled_func("some", "other", "values", "to", "check", "call")
    compiled_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

def compiled_func(a,b,c,d,e,f):
    return a, b, c, d, e, f

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

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 static PyObject *const_str_plain_itertools; 35 static PyObject *const_str_plain_itertools;
37 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple; 36 static PyObject *const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple;
n 38 static PyObject *const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple; n
39 static PyObject *const_str_plain_f; 37 static PyObject *const_str_plain_f;
n 40 static PyObject *const_str_plain_values; n
41 extern PyObject *const_str_plain___file__; 38 extern PyObject *const_str_plain___file__;
n 42 static PyObject *const_str_plain_other; n
43 extern PyObject *const_int_0; 39 extern PyObject *const_int_0;
n 44 static PyObject *const_str_plain_check; n
45 static PyObject *const_str_plain_compiled_func; 40 static PyObject *const_str_plain_compiled_func;
n n 41 static PyObject *const_str_plain_a;
46 extern PyObject *const_str_plain_print; 42 extern PyObject *const_str_plain_print;
n 47 static PyObject *const_str_plain_a; n
48 static PyObject *const_str_plain_call;
49 static PyObject *const_int_pos_50000; 43 static PyObject *const_int_pos_50000;
50 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple; 44 static PyObject *const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple;
n 51 static PyObject *const_str_plain_random; n
52 static PyObject *const_str_plain_e; 45 static PyObject *const_str_plain_e;
53 static PyObject *const_str_plain_calledRepeatedly; 46 static PyObject *const_str_plain_calledRepeatedly;
54 static PyObject *const_str_angle_module; 47 static PyObject *const_str_angle_module;
55 static PyObject *const_str_plain_None; 48 static PyObject *const_str_plain_None;
56 static PyObject *const_str_plain_x; 49 static PyObject *const_str_plain_x;
57 extern PyObject *const_tuple_empty; 50 extern PyObject *const_tuple_empty;
58 static PyObject *const_str_plain_c; 51 static PyObject *const_str_plain_c;
59 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352; 52 static PyObject *const_str_digest_5ed1392909ad16e6227b8230f4582352;
n 60 static PyObject *const_str_plain_some; n
61 static PyObject *const_str_plain_repeat; 53 static PyObject *const_str_plain_repeat;
n 62 static PyObject *const_str_plain_new; n
63 static PyObject *const_tuple_none_int_pos_50000_tuple; 54 static PyObject *const_tuple_none_int_pos_50000_tuple;
64 extern PyObject *const_str_plain___main__; 55 extern PyObject *const_str_plain___main__;
n 65 static PyObject *const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple; n
66 static PyObject *const_tuple_ca2f155a28955fc472d4376e2721d689_tuple;
67 static PyObject *const_str_digest_4459fb58c86ba520274239aef5724cdb; 56 static PyObject *const_str_digest_4459fb58c86ba520274239aef5724cdb;
68 static PyObject *const_str_plain_d; 57 static PyObject *const_str_plain_d;
69 extern PyObject *const_str_plain___doc__; 58 extern PyObject *const_str_plain___doc__;
70 extern PyObject *const_str_plain___cached__; 59 extern PyObject *const_str_plain___cached__;
71 static PyObject *const_str_plain_print_function; 60 static PyObject *const_str_plain_print_function;
73 62
74 static bool constants_created = false; 63 static bool constants_created = false;
75 64
76 static void createModuleConstants( void ) 65 static void createModuleConstants( void )
77 { 66 {
n 78     const_str_plain_to = UNSTREAM_STRING( &constant_bin[ 0 ], 2, 1 ); n
79     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 2 ], 1, 1 ); 67     const_str_plain_b = UNSTREAM_STRING( &constant_bin[ 0 ], 1, 1 );
80     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 3 ], 9, 1 ); 68     const_str_plain_itertools = UNSTREAM_STRING( &constant_bin[ 1 ], 9, 1 );
81     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 ); 69     const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple = PyTuple_New( 6 );
n 82     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 12 ], 1, 1 ); n 70     const_str_plain_a = UNSTREAM_STRING( &constant_bin[ 10 ], 1, 1 );
83     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a ); 71     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 0, const_str_plain_a ); Py_INCREF( const_str_plain_a );
84     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b ); 72     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 1, const_str_plain_b ); Py_INCREF( const_str_plain_b );
n 85     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 13 ], 1, 1 ); n 73     const_str_plain_c = UNSTREAM_STRING( &constant_bin[ 11 ], 1, 1 );
86     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c ); 74     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 2, const_str_plain_c ); Py_INCREF( const_str_plain_c );
n 87     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 14 ], 1, 1 ); n 75     const_str_plain_d = UNSTREAM_STRING( &constant_bin[ 12 ], 1, 1 );
88     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d ); 76     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 3, const_str_plain_d ); Py_INCREF( const_str_plain_d );
n 89     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 5 ], 1, 1 ); n 77     const_str_plain_e = UNSTREAM_STRING( &constant_bin[ 3 ], 1, 1 );
90     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e ); 78     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 4, const_str_plain_e ); Py_INCREF( const_str_plain_e );
n 91     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 15 ], 1, 1 ); n 79     const_str_plain_f = UNSTREAM_STRING( &constant_bin[ 13 ], 1, 1 );
92     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f ); 80     PyTuple_SET_ITEM( const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 5, const_str_plain_f ); Py_INCREF( const_str_plain_f );
n 93     const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple = PyTuple_New( 6 ); n
94     const_str_plain_some = UNSTREAM_STRING( &constant_bin[ 16 ], 4, 1 );
95     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
96     const_str_plain_new = UNSTREAM_STRING( &constant_bin[ 20 ], 3, 1 );
97     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 1, const_str_plain_new ); Py_INCREF( const_str_plain_new );
98     const_str_plain_values = UNSTREAM_STRING( &constant_bin[ 23 ], 6, 1 );
99     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
100     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
101     const_str_plain_check = UNSTREAM_STRING( &constant_bin[ 29 ], 5, 1 );
102     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
103     const_str_plain_call = UNSTREAM_STRING( &constant_bin[ 34 ], 4, 1 );
104     PyTuple_SET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
105     const_str_plain_other = UNSTREAM_STRING( &constant_bin[ 38 ], 5, 1 );
106     const_str_plain_compiled_func = UNSTREAM_STRING( &constant_bin[ 43 ], 13, 1 ); 81     const_str_plain_compiled_func = UNSTREAM_STRING( &constant_bin[ 14 ], 13, 1 );
107     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul ); 82     const_int_pos_50000 = PyLong_FromUnsignedLong( 50000ul );
108     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 ); 83     const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple = PyTuple_New( 1 );
n 109     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 56 ], 3, 0 ); n 84     const_str_digest_5ed1392909ad16e6227b8230f4582352 = UNSTREAM_STRING( &constant_bin[ 27 ], 3, 0 );
110     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 ); 85     PyTuple_SET_ITEM( const_tuple_str_digest_5ed1392909ad16e6227b8230f4582352_tuple, 0, const_str_digest_5ed1392909ad16e6227b8230f4582352 ); Py_INCREF( const_str_digest_5ed1392909ad16e6227b8230f4582352 );
n 111     const_str_plain_random = UNSTREAM_STRING( &constant_bin[ 59 ], 6, 1 ); n
112     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 65 ], 16, 1 ); 86     const_str_plain_calledRepeatedly = UNSTREAM_STRING( &constant_bin[ 30 ], 16, 1 );
113     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 81 ], 8, 0 ); 87     const_str_angle_module = UNSTREAM_STRING( &constant_bin[ 46 ], 8, 0 );
114     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 89 ], 4, 1 ); 88     const_str_plain_None = UNSTREAM_STRING( &constant_bin[ 54 ], 4, 1 );
115     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 93 ], 1, 1 ); 89     const_str_plain_x = UNSTREAM_STRING( &constant_bin[ 58 ], 1, 1 );
116     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 94 ], 6, 1 ); 90     const_str_plain_repeat = UNSTREAM_STRING( &constant_bin[ 59 ], 6, 1 );
117     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 ); 91     const_tuple_none_int_pos_50000_tuple = PyTuple_New( 2 );
118     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None ); 92     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 0, Py_None ); Py_INCREF( Py_None );
119     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 ); 93     PyTuple_SET_ITEM( const_tuple_none_int_pos_50000_tuple, 1, const_int_pos_50000 ); Py_INCREF( const_int_pos_50000 );
n 120     const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple = PyTuple_New( 6 ); n
121     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
122     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 1, const_str_plain_random ); Py_INCREF( const_str_plain_random );
123     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
124     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
125     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
126     PyTuple_SET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
127     const_tuple_ca2f155a28955fc472d4376e2721d689_tuple = PyTuple_New( 6 );
128     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0, const_str_plain_some ); Py_INCREF( const_str_plain_some );
129     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 1, const_str_plain_other ); Py_INCREF( const_str_plain_other );
130     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 2, const_str_plain_values ); Py_INCREF( const_str_plain_values );
131     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 3, const_str_plain_to ); Py_INCREF( const_str_plain_to );
132     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 4, const_str_plain_check ); Py_INCREF( const_str_plain_check );
133     PyTuple_SET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 5, const_str_plain_call ); Py_INCREF( const_str_plain_call );
134     const_str_digest_4459fb58c86ba520274239aef5724cdb = UNSTREAM_STRING( &constant_bin[ 100 ], 93, 0 ); 94     const_str_digest_4459fb58c86ba520274239aef5724cdb = UNSTREAM_STRING( &constant_bin[ 65 ], 93, 0 );
135     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 193 ], 14, 1 ); 95     const_str_plain_print_function = UNSTREAM_STRING( &constant_bin[ 158 ], 14, 1 );
136 96
137     constants_created = true; 97     constants_created = true;
138 } 98 }
139 99
140 #ifndef __NUITKA_NO_ASSERT__ 100 #ifndef __NUITKA_NO_ASSERT__
147 } 107 }
148 #endif 108 #endif
149 109
150 // The module code objects. 110 // The module code objects.
151 static PyCodeObject *codeobj_deeb831ec34c9b102233fa9886ffe0be; 111 static PyCodeObject *codeobj_deeb831ec34c9b102233fa9886ffe0be;
n 152 static PyCodeObject *codeobj_9410175befb00967af6cd56634c98da3; n 112 static PyCodeObject *codeobj_8e01ca9cb10a1cf8055fb0f18d64a5c0;
153 static PyCodeObject *codeobj_9c35df0a597b9c13c5580c7fe941ddc9; 113 static PyCodeObject *codeobj_9c35df0a597b9c13c5580c7fe941ddc9;
154 /* For use in "MainProgram.c". */ 114 /* For use in "MainProgram.c". */
155 PyCodeObject *codeobj_main = NULL; 115 PyCodeObject *codeobj_main = NULL;
156 116
157 static void createModuleCodeObjects(void) 117 static void createModuleCodeObjects(void)
158 { 118 {
159     module_filename_obj = const_str_digest_4459fb58c86ba520274239aef5724cdb; 119     module_filename_obj = const_str_digest_4459fb58c86ba520274239aef5724cdb;
160     codeobj_deeb831ec34c9b102233fa9886ffe0be = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE ); 120     codeobj_deeb831ec34c9b102233fa9886ffe0be = MAKE_CODEOBJ( module_filename_obj, const_str_angle_module, 1, const_tuple_empty, 0, 0, CO_NOFREE );
161     codeobj_main = codeobj_deeb831ec34c9b102233fa9886ffe0be; 121     codeobj_main = codeobj_deeb831ec34c9b102233fa9886ffe0be;
n 162     codeobj_9410175befb00967af6cd56634c98da3 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); n 122     codeobj_8e01ca9cb10a1cf8055fb0f18d64a5c0 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_calledRepeatedly, 25, const_tuple_empty, 0, 0, CO_NOFREE );
163     codeobj_9c35df0a597b9c13c5580c7fe941ddc9 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE ); 123     codeobj_9c35df0a597b9c13c5580c7fe941ddc9 = MAKE_CODEOBJ( module_filename_obj, const_str_plain_compiled_func, 22, const_tuple_d4571c3ff966778a8b3ba4a6bd66fdef_tuple, 6, 0, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE );
164 } 124 }
165 125
166 // The module function declarations. 126 // The module function declarations.
167 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  ); 127 static PyObject *MAKE_FUNCTION___main__$$$function_1_compiled_func(  );
286 #ifndef __NUITKA_NO_ASSERT__ 246 #ifndef __NUITKA_NO_ASSERT__
287     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED(); 247     NUITKA_MAY_BE_UNUSED bool had_error = ERROR_OCCURRED();
288 #endif 248 #endif
289 249
290     // Local variable declarations. 250     // Local variable declarations.
n 291     struct Nuitka_FrameObject *frame_9410175befb00967af6cd56634c98da3; n
292     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
293     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
294     PyObject *exception_type = NULL;
295     PyObject *exception_value = NULL;
296     PyTracebackObject *exception_tb = NULL;
297     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
298     static struct Nuitka_FrameObject *cache_frame_9410175befb00967af6cd56634c98da3 = NULL;
299     PyObject *tmp_return_value = NULL; 251     PyObject *tmp_return_value = NULL;
300 252
301     // Actual function code. 253     // Actual function code.
n 302     MAKE_OR_REUSE_FRAME( cache_frame_9410175befb00967af6cd56634c98da3, codeobj_9410175befb00967af6cd56634c98da3, module___main__, 0 ); n
303     frame_9410175befb00967af6cd56634c98da3 = cache_frame_9410175befb00967af6cd56634c98da3;
304  
305     // Push the new frame as the currently active one.
306     pushFrameStack( frame_9410175befb00967af6cd56634c98da3 );
307  
308     // Mark the frame object as in use, ref count 1 will be up for reuse.
309     assert( Py_REFCNT( frame_9410175befb00967af6cd56634c98da3 ) == 2 ); // Frame stack
310  
311     // Framed code:
312     {
313     PyObject *tmp_called_name_1;
314     tmp_called_name_1 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
315  
316     if (unlikely( tmp_called_name_1 == NULL ))
317     {
318         tmp_called_name_1 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
319     }
320  
321     if ( tmp_called_name_1 == NULL )
322     {
323  
324         exception_type = PyExc_NameError;
325         Py_INCREF( exception_type );
326         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
327         exception_tb = NULL;
328         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
329         CHAIN_EXCEPTION( exception_value );
330  
331         exception_lineno = 29;
332  
333         goto frame_exception_exit_1;
334     }
335  
336     frame_9410175befb00967af6cd56634c98da3->m_frame.f_lineno = 29;
337     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_1, &PyTuple_GET_ITEM( const_tuple_78e2f1ad354bdb7db1a0fda186168ee0_tuple, 0 ) );
338  
339     if ( tmp_unused == NULL )
340     {
341         assert( ERROR_OCCURRED() );
342  
343         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
344  
345  
346         exception_lineno = 29;
347  
348         goto frame_exception_exit_1;
349     }
350     Py_DECREF( tmp_unused );
351     }
352     {
353     PyObject *tmp_called_name_2;
354     tmp_called_name_2 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
355  
356     if (unlikely( tmp_called_name_2 == NULL ))
357     {
358         tmp_called_name_2 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
359     }
360  
361     if ( tmp_called_name_2 == NULL )
362     {
363  
364         exception_type = PyExc_NameError;
365         Py_INCREF( exception_type );
366         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
367         exception_tb = NULL;
368         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
369         CHAIN_EXCEPTION( exception_value );
370  
371         exception_lineno = 30;
372  
373         goto frame_exception_exit_1;
374     }
375  
376     frame_9410175befb00967af6cd56634c98da3->m_frame.f_lineno = 30;
377     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_2, &PyTuple_GET_ITEM( const_tuple_ca2f155a28955fc472d4376e2721d689_tuple, 0 ) );
378  
379     if ( tmp_unused == NULL )
380     {
381         assert( ERROR_OCCURRED() );
382  
383         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
384  
385  
386         exception_lineno = 30;
387  
388         goto frame_exception_exit_1;
389     }
390     Py_DECREF( tmp_unused );
391     }
392     {
393     PyObject *tmp_called_name_3;
394     tmp_called_name_3 = GET_STRING_DICT_VALUE( moduledict___main__, (Nuitka_StringObject *)const_str_plain_compiled_func );
395  
396     if (unlikely( tmp_called_name_3 == NULL ))
397     {
398         tmp_called_name_3 = GET_STRING_DICT_VALUE( dict_builtin, (Nuitka_StringObject *)const_str_plain_compiled_func );
399     }
400  
401     if ( tmp_called_name_3 == NULL )
402     {
403  
404         exception_type = PyExc_NameError;
405         Py_INCREF( exception_type );
406         exception_value = PyUnicode_FromFormat( "name '%s' is not defined", "compiled_func" );
407         exception_tb = NULL;
408         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
409         CHAIN_EXCEPTION( exception_value );
410  
411         exception_lineno = 31;
412  
413         goto frame_exception_exit_1;
414     }
415  
416     frame_9410175befb00967af6cd56634c98da3->m_frame.f_lineno = 31;
417     tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_3, &PyTuple_GET_ITEM( const_tuple_4cee4124c8df2995a8a82b981e580f5e_tuple, 0 ) );
418  
419     if ( tmp_unused == NULL )
420     {
421         assert( ERROR_OCCURRED() );
422  
423         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
424  
425  
426         exception_lineno = 31;
427  
428         goto frame_exception_exit_1;
429     }
430     Py_DECREF( tmp_unused );
431     }
432  
433 #if 0
434     RESTORE_FRAME_EXCEPTION( frame_9410175befb00967af6cd56634c98da3 );
435 #endif
436  
437     // Put the previous frame back on top.
438     popFrameStack();
439  
440     goto frame_no_exception_1;
441  
442     frame_exception_exit_1:;
443  
444 #if 0
445     RESTORE_FRAME_EXCEPTION( frame_9410175befb00967af6cd56634c98da3 );
446 #endif
447  
448     if ( exception_tb == NULL )
449     {
450         exception_tb = MAKE_TRACEBACK( frame_9410175befb00967af6cd56634c98da3, exception_lineno );
451     }
452     else if ( exception_tb->tb_frame != &frame_9410175befb00967af6cd56634c98da3->m_frame )
453     {
454         exception_tb = ADD_TRACEBACK( exception_tb, frame_9410175befb00967af6cd56634c98da3, exception_lineno );
455     }
456  
457     // Attachs locals to frame if any.
458     Nuitka_Frame_AttachLocals(
459         (struct Nuitka_FrameObject *)frame_9410175befb00967af6cd56634c98da3,
460         type_description_1
461     );
462  
463  
464     // Release cached frame.
465     if ( frame_9410175befb00967af6cd56634c98da3 == cache_frame_9410175befb00967af6cd56634c98da3 )
466     {
467         Py_DECREF( frame_9410175befb00967af6cd56634c98da3 );
468     }
469     cache_frame_9410175befb00967af6cd56634c98da3 = NULL;
470  
471     assertFrameObject( frame_9410175befb00967af6cd56634c98da3 );
472  
473     // Put the previous frame back on top.
474     popFrameStack();
475  
476     // Return the error.
477     goto function_exception_exit;
478  
479     frame_no_exception_1:;
480  
481     { 254     {
482     tmp_return_value = Py_None; 255     tmp_return_value = Py_None;
483     Py_INCREF( tmp_return_value ); 256     Py_INCREF( tmp_return_value );
484     goto function_return_exit; 257     goto function_return_exit;
485     } 258     }
486 259
487     // Return statement must have exited already. 260     // Return statement must have exited already.
488     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly ); 261     NUITKA_CANNOT_GET_HERE( __main__$$$function_2_calledRepeatedly );
489     return NULL; 262     return NULL;
490 263
n 491 function_exception_exit: n
492     assert( exception_type );
493     RESTORE_ERROR_OCCURRED( exception_type, exception_value, exception_tb );
494  
495     return NULL;
496 function_return_exit: 264 function_return_exit:
497 265
498 CHECK_OBJECT( tmp_return_value ); 266 CHECK_OBJECT( tmp_return_value );
499 assert( had_error || !ERROR_OCCURRED() ); 267 assert( had_error || !ERROR_OCCURRED() );
500 return tmp_return_value; 268 return tmp_return_value;
533         impl___main__$$$function_2_calledRepeatedly, 301         impl___main__$$$function_2_calledRepeatedly,
534         const_str_plain_calledRepeatedly, 302         const_str_plain_calledRepeatedly,
535 #if PYTHON_VERSION >= 300 303 #if PYTHON_VERSION >= 300
536         NULL, 304         NULL,
537 #endif 305 #endif
t 538         codeobj_9410175befb00967af6cd56634c98da3, t 306         codeobj_8e01ca9cb10a1cf8055fb0f18d64a5c0,
539         NULL, 307         NULL,
540 #if PYTHON_VERSION >= 300 308 #if PYTHON_VERSION >= 300
541         NULL, 309         NULL,
542         NULL, 310         NULL,
543 #endif 311 #endif