Construct NumpyArrayConstruction

Performance Diagrams

Construct NumpyArrayConstruction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 3.10Nuitka (main)Nuitka (develop)Nuitka (factory)16420428088.11538461538461257.0CPython 3.10162743686240.03846153846155259.19808672512636Nuitka (main)162744621391.96153846153845259.19667961877917Nuitka (develop)162460646543.8846153846154259.62404114276717Nuitka (factory)Construct NumpyArrayConstructionTicks Construct NumpyArrayConstruction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)16120245688.11538461538461260.0810634837145CPython 3.8163237723240.03846153846155257.0Nuitka (main)163234347391.96153846153845257.0051107153612Nuitka (develop)163206947543.8846153846154257.0465898625462Nuitka (factory)Construct NumpyArrayConstructionTicks Construct NumpyArrayConstruction 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)19067074788.11538461538461257.0CPython 2.7187211339240.03846153846155261.4835033790555Nuitka (main)187217409391.96153846153845261.47563646497343Nuitka (develop)187237767543.8846153846154261.4492518460471Nuitka (factory)Construct NumpyArrayConstructionTicks

Source Code with Construct

    return x


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

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Source Code without Construct

    x = numpy.array, numpy.int32
    # construct_end

    return x


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

print("OK.")

#     Python test originally created or extracted from other peoples work. The
#     parts from me are licensed as below. It is at least Free Software where
#     it's copied from other people. In these cases, that will normally be
#     indicated.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.

Context Diff of Source Code


Construct
Baseline
13 13
14 def calledRepeatedly(): 14 def calledRepeatedly():
15     # This is supposed to make a call to a numpy function, which is 15     # This is supposed to make a call to a numpy function, which is
16     # being optimized separately. 16     # being optimized separately.
17     # construct_begin 17     # construct_begin
n 18     x = numpy.array([[1, 2, 3], [4, 5, 6]], numpy.int32) n 18  
19     # construct_alternative 19     # construct_alternative
t 20   t 20     x = numpy.array, numpy.int32
21   21     # construct_end
22 22
23     return x 23     return x
24 24
25 25
26 for x in itertools.repeat(None, 20000): 26 for x in itertools.repeat(None, 20000):

Context Diff of Generated Code


Construct
Baseline
31 31
32 PyObject *module___main__; 32 PyObject *module___main__;
33 PyDictObject *moduledict___main__; 33 PyDictObject *moduledict___main__;
34 34
35 /* The declarations of module constants used, if any. */ 35 /* The declarations of module constants used, if any. */
n 36 static PyObject *mod_consts[19]; n 36 static PyObject *mod_consts[18];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[19]; n 38 static Py_hash_t mod_consts_hash[18];
39 #endif 39 #endif
40 40
41 static PyObject *module_filename_obj = NULL; 41 static PyObject *module_filename_obj = NULL;
42 42
43 /* Indicator if this modules private constants were created yet. */ 43 /* Indicator if this modules private constants were created yet. */
48     if (constants_created == false) { 48     if (constants_created == false) {
49         loadConstantsBlob(tstate, &mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(tstate, &mod_consts[0], UNTRANSLATE("__main__"));
50         constants_created = true; 50         constants_created = true;
51 51
52 #ifndef __NUITKA_NO_ASSERT__ 52 #ifndef __NUITKA_NO_ASSERT__
n 53         for (int i = 0; i < 19; i++) { n 53         for (int i = 0; i < 18; i++) {
54             mod_consts_hash[i] = DEEP_HASH(tstate, mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(tstate, mod_consts[i]);
55         } 55         }
56 #endif 56 #endif
57     } 57     }
58 } 58 }
68 #ifndef __NUITKA_NO_ASSERT__ 68 #ifndef __NUITKA_NO_ASSERT__
69 void checkModuleConstants___main__(PyThreadState *tstate) { 69 void checkModuleConstants___main__(PyThreadState *tstate) {
70     // The module may not have been used at all, then ignore this. 70     // The module may not have been used at all, then ignore this.
71     if (constants_created == false) return; 71     if (constants_created == false) return;
72 72
n 73     for (int i = 0; i < 19; i++) { n 73     for (int i = 0; i < 18; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(tstate, mod_consts[i]));
75         CHECK_OBJECT_DEEP(mod_consts[i]); 75         CHECK_OBJECT_DEEP(mod_consts[i]);
76     } 76     }
77 } 77 }
78 #endif 78 #endif
82 static PyCodeObject *codeobj_281ad48252bc39e2af1dfef7c60317ea; 82 static PyCodeObject *codeobj_281ad48252bc39e2af1dfef7c60317ea;
83 /* For use in "MainProgram.c". */ 83 /* For use in "MainProgram.c". */
84 PyCodeObject *codeobj_main = NULL; 84 PyCodeObject *codeobj_main = NULL;
85 85
86 static void createModuleCodeObjects(void) { 86 static void createModuleCodeObjects(void) {
n 87     module_filename_obj = mod_consts[5]; CHECK_OBJECT(module_filename_obj); n 87     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
88     codeobj_f74fdd307da91c25f7bbde638ce123a0 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE | CO_FUTURE_PRINT_FUNCTION, mod_consts[17], mod_consts[17], NULL, NULL, 0, 0, 0); 88     codeobj_f74fdd307da91c25f7bbde638ce123a0 = MAKE_CODE_OBJECT(module_filename_obj, 1, CO_NOFREE | CO_FUTURE_PRINT_FUNCTION, mod_consts[16], mod_consts[16], NULL, NULL, 0, 0, 0);
89     codeobj_main = codeobj_f74fdd307da91c25f7bbde638ce123a0; 89     codeobj_main = codeobj_f74fdd307da91c25f7bbde638ce123a0;
n 90     codeobj_281ad48252bc39e2af1dfef7c60317ea = MAKE_CODE_OBJECT(module_filename_obj, 14, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE | CO_FUTURE_PRINT_FUNCTION, mod_consts[11], mod_consts[11], mod_consts[18], NULL, 0, 0, 0); n 90     codeobj_281ad48252bc39e2af1dfef7c60317ea = MAKE_CODE_OBJECT(module_filename_obj, 14, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE | CO_FUTURE_PRINT_FUNCTION, mod_consts[10], mod_consts[10], mod_consts[17], NULL, 0, 0, 0);
91 } 91 }
92 92
93 // The module function declarations. 93 // The module function declarations.
94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 94 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
95 95
145     assert(Py_REFCNT(frame_281ad48252bc39e2af1dfef7c60317ea) == 2); 145     assert(Py_REFCNT(frame_281ad48252bc39e2af1dfef7c60317ea) == 2);
146 146
147     // Framed code: 147     // Framed code:
148     { 148     {
149         PyObject *tmp_assign_source_1; 149         PyObject *tmp_assign_source_1;
n 150         PyObject *tmp_called_value_1; n 150         PyObject *tmp_tuple_element_1;
151         PyObject *tmp_expression_value_1; 151         PyObject *tmp_expression_value_1;
n 152         PyObject *tmp_args_element_value_1; n
153         PyObject *tmp_args_element_value_2;
154         PyObject *tmp_expression_value_2;
155         tmp_expression_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]); 152         tmp_expression_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
156 153
157         if (unlikely(tmp_expression_value_1 == NULL)) { 154         if (unlikely(tmp_expression_value_1 == NULL)) {
158             tmp_expression_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[0]); 155             tmp_expression_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[0]);
159         } 156         }
162             assert(HAS_ERROR_OCCURRED(tstate)); 159             assert(HAS_ERROR_OCCURRED(tstate));
163 160
164             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 161             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
165 162
166 163
n 167             exception_lineno = 18; n 164             exception_lineno = 20;
168             type_description_1 = "o"; 165             type_description_1 = "o";
169             goto frame_exception_exit_1; 166             goto frame_exception_exit_1;
170         } 167         }
n 171         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tstate, tmp_expression_value_1, mod_consts[1]); n 168         tmp_tuple_element_1 = LOOKUP_ATTRIBUTE(tstate, tmp_expression_value_1, mod_consts[1]);
172         if (tmp_called_value_1 == NULL) { 169         if (tmp_tuple_element_1 == NULL) {
173             assert(HAS_ERROR_OCCURRED(tstate)); 170             assert(HAS_ERROR_OCCURRED(tstate));
174 171
175             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 172             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
176 173
177 174
n 178             exception_lineno = 18; n 175             exception_lineno = 20;
179             type_description_1 = "o"; 176             type_description_1 = "o";
180             goto frame_exception_exit_1; 177             goto frame_exception_exit_1;
181         } 178         }
n 182         tmp_args_element_value_1 = DEEP_COPY_LIST_GUIDED(tstate, mod_consts[2], "ll"); n 179         tmp_assign_source_1 = MAKE_TUPLE_EMPTY(2);
183         tmp_expression_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
184  
185         if (unlikely(tmp_expression_value_2 == NULL)) {
186             tmp_expression_value_2 = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[0]);
187         }
188  
189         if (tmp_expression_value_2 == NULL) {
190             assert(HAS_ERROR_OCCURRED(tstate));
191  
192             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
193             Py_DECREF(tmp_called_value_1);
194             Py_DECREF(tmp_args_element_value_1);
195  
196             exception_lineno = 18;
197             type_description_1 = "o";
198             goto frame_exception_exit_1;
199         }
200         tmp_args_element_value_2 = LOOKUP_ATTRIBUTE(tstate, tmp_expression_value_2, mod_consts[3]);
201         if (tmp_args_element_value_2 == NULL) {
202             assert(HAS_ERROR_OCCURRED(tstate));
203  
204             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
205             Py_DECREF(tmp_called_value_1);
206             Py_DECREF(tmp_args_element_value_1);
207  
208             exception_lineno = 18;
209             type_description_1 = "o";
210             goto frame_exception_exit_1;
211         }
212         frame_281ad48252bc39e2af1dfef7c60317ea->m_frame.f_lineno = 18;
213         { 180         {
n 214             PyObject *call_args[] = {tmp_args_element_value_1, tmp_args_element_value_2}; n 181             PyObject *tmp_expression_value_2;
215             tmp_assign_source_1 = CALL_FUNCTION_WITH_ARGS2(tstate, tmp_called_value_1, call_args); 182             PyTuple_SET_ITEM(tmp_assign_source_1, 0, tmp_tuple_element_1);
183             tmp_expression_value_2 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[0]);
184  
185             if (unlikely(tmp_expression_value_2 == NULL)) {
186                 tmp_expression_value_2 = GET_MODULE_VARIABLE_VALUE_FALLBACK_IN_FUNCTION(tstate, mod_consts[0]);
216         } 187             }
217 188
n 218         Py_DECREF(tmp_called_value_1); n
219         Py_DECREF(tmp_args_element_value_1);
220         Py_DECREF(tmp_args_element_value_2);
221         if (tmp_assign_source_1 == NULL) { 189             if (tmp_expression_value_2 == NULL) {
222             assert(HAS_ERROR_OCCURRED(tstate)); 190                 assert(HAS_ERROR_OCCURRED(tstate));
223 191
n 224             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); n 192                 FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
225 193
226 194
n 227             exception_lineno = 18; n 195                 exception_lineno = 20;
228             type_description_1 = "o"; 196                 type_description_1 = "o";
197                 goto tuple_build_exception_1;
198             }
199             tmp_tuple_element_1 = LOOKUP_ATTRIBUTE(tstate, tmp_expression_value_2, mod_consts[2]);
200             if (tmp_tuple_element_1 == NULL) {
201                 assert(HAS_ERROR_OCCURRED(tstate));
202  
203                 FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);
204  
205  
206                 exception_lineno = 20;
207                 type_description_1 = "o";
208                 goto tuple_build_exception_1;
209             }
210             PyTuple_SET_ITEM(tmp_assign_source_1, 1, tmp_tuple_element_1);
211         }
212         goto tuple_build_noexception_1;
213         // Exception handling pass through code for tuple_build:
214         tuple_build_exception_1:;
215         Py_DECREF(tmp_assign_source_1);
229             goto frame_exception_exit_1; 216         goto frame_exception_exit_1;
230         } 217         // Finished with no exception for tuple_build:
218         tuple_build_noexception_1:;
231         assert(var_x == NULL); 219         assert(var_x == NULL);
232         var_x = tmp_assign_source_1; 220         var_x = tmp_assign_source_1;
233     } 221     }
234 222
235 223
328 316
329 317
330 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() { 318 static PyObject *MAKE_FUNCTION___main__$$$function__1_calledRepeatedly() {
331     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 319     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
332         impl___main__$$$function__1_calledRepeatedly, 320         impl___main__$$$function__1_calledRepeatedly,
n 333         mod_consts[11], n 321         mod_consts[10],
334 #if PYTHON_VERSION >= 0x300 322 #if PYTHON_VERSION >= 0x300
335         NULL, 323         NULL,
336 #endif 324 #endif
337         codeobj_281ad48252bc39e2af1dfef7c60317ea, 325         codeobj_281ad48252bc39e2af1dfef7c60317ea,
338         NULL, 326         NULL,
718 706
719     // Module code. 707     // Module code.
720     { 708     {
721         PyObject *tmp_assign_source_1; 709         PyObject *tmp_assign_source_1;
722         tmp_assign_source_1 = Py_None; 710         tmp_assign_source_1 = Py_None;
n 723         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1); n 711         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
724     } 712     }
725     { 713     {
726         PyObject *tmp_assign_source_2; 714         PyObject *tmp_assign_source_2;
n 727         tmp_assign_source_2 = mod_consts[5]; n 715         tmp_assign_source_2 = mod_consts[4];
728         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2); 716         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
729     } 717     }
730     { 718     {
731         PyObject *tmp_assign_source_3; 719         PyObject *tmp_assign_source_3;
732         { 720         {
733             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 721             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 734             tmp_assign_source_3 = LOOKUP_ATTRIBUTE(tstate, hard_module, mod_consts[7]); n 722             tmp_assign_source_3 = LOOKUP_ATTRIBUTE(tstate, hard_module, mod_consts[6]);
735         } 723         }
736         assert(!(tmp_assign_source_3 == NULL)); 724         assert(!(tmp_assign_source_3 == NULL));
n 737         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3); n 725         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
738     } 726     }
739     frame_f74fdd307da91c25f7bbde638ce123a0 = MAKE_MODULE_FRAME(codeobj_f74fdd307da91c25f7bbde638ce123a0, module___main__); 727     frame_f74fdd307da91c25f7bbde638ce123a0 = MAKE_MODULE_FRAME(codeobj_f74fdd307da91c25f7bbde638ce123a0, module___main__);
740 728
741     // Push the new frame as the currently active one, and we should be exclusively 729     // Push the new frame as the currently active one, and we should be exclusively
742     // owning it. 730     // owning it.
748         PyObject *tmp_assign_source_4; 736         PyObject *tmp_assign_source_4;
749         PyObject *tmp_name_value_1; 737         PyObject *tmp_name_value_1;
750         PyObject *tmp_globals_arg_value_1; 738         PyObject *tmp_globals_arg_value_1;
751         PyObject *tmp_locals_arg_value_1; 739         PyObject *tmp_locals_arg_value_1;
752         PyObject *tmp_fromlist_value_1; 740         PyObject *tmp_fromlist_value_1;
n 753         tmp_name_value_1 = mod_consts[8]; n 741         tmp_name_value_1 = mod_consts[7];
754         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 742         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
755         tmp_locals_arg_value_1 = Py_None; 743         tmp_locals_arg_value_1 = Py_None;
756         tmp_fromlist_value_1 = Py_None; 744         tmp_fromlist_value_1 = Py_None;
757         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 6; 745         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 6;
758         tmp_assign_source_4 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1); 746         tmp_assign_source_4 = IMPORT_MODULE4(tstate, tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1);
764 752
765             exception_lineno = 6; 753             exception_lineno = 6;
766 754
767             goto frame_exception_exit_1; 755             goto frame_exception_exit_1;
768         } 756         }
n 769         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4); n 757         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
770     } 758     }
771     { 759     {
772         PyObject *tmp_assign_source_5; 760         PyObject *tmp_assign_source_5;
773         PyObject *tmp_name_value_2; 761         PyObject *tmp_name_value_2;
774         PyObject *tmp_globals_arg_value_2; 762         PyObject *tmp_globals_arg_value_2;
792         } 780         }
793         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5); 781         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[0], tmp_assign_source_5);
794     } 782     }
795     { 783     {
796         PyObject *tmp_assign_source_6; 784         PyObject *tmp_assign_source_6;
n 797         tmp_assign_source_6 = mod_consts[9]; n 785         tmp_assign_source_6 = mod_consts[8];
798         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_6); 786         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_6);
799     } 787     }
800     { 788     {
801         PyObject *tmp_assign_source_7; 789         PyObject *tmp_assign_source_7;
802 790
803 791
804         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly(); 792         tmp_assign_source_7 = MAKE_FUNCTION___main__$$$function__1_calledRepeatedly();
805 793
n 806         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_7); n 794         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_7);
807     } 795     }
808     { 796     {
809         PyObject *tmp_assign_source_8; 797         PyObject *tmp_assign_source_8;
810         PyObject *tmp_iter_arg_1; 798         PyObject *tmp_iter_arg_1;
811         PyObject *tmp_called_instance_1; 799         PyObject *tmp_called_instance_1;
n 812         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[8]); n 800         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[7]);
813 801
814         if (unlikely(tmp_called_instance_1 == NULL)) { 802         if (unlikely(tmp_called_instance_1 == NULL)) {
n 815             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[8]); n 803             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[7]);
816         } 804         }
817 805
818         assert(!(tmp_called_instance_1 == NULL)); 806         assert(!(tmp_called_instance_1 == NULL));
819         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 26; 807         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 26;
820         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 808         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
821             tstate, 809             tstate,
822             tmp_called_instance_1, 810             tmp_called_instance_1,
n 823             mod_consts[12], n 811             mod_consts[11],
824             &PyTuple_GET_ITEM(mod_consts[13], 0) 812             &PyTuple_GET_ITEM(mod_consts[12], 0)
825         ); 813         );
826 814
827         if (tmp_iter_arg_1 == NULL) { 815         if (tmp_iter_arg_1 == NULL) {
828             assert(HAS_ERROR_OCCURRED(tstate)); 816             assert(HAS_ERROR_OCCURRED(tstate));
829 817
879     } 867     }
880     { 868     {
881         PyObject *tmp_assign_source_10; 869         PyObject *tmp_assign_source_10;
882         CHECK_OBJECT(tmp_for_loop_1__iter_value); 870         CHECK_OBJECT(tmp_for_loop_1__iter_value);
883         tmp_assign_source_10 = tmp_for_loop_1__iter_value; 871         tmp_assign_source_10 = tmp_for_loop_1__iter_value;
n 884         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[14], tmp_assign_source_10); n 872         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[13], tmp_assign_source_10);
885     } 873     }
886     { 874     {
887         PyObject *tmp_called_value_1; 875         PyObject *tmp_called_value_1;
888         PyObject *tmp_call_result_1; 876         PyObject *tmp_call_result_1;
n 889         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[11]); n 877         tmp_called_value_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[10]);
890 878
891         if (unlikely(tmp_called_value_1 == NULL)) { 879         if (unlikely(tmp_called_value_1 == NULL)) {
n 892             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[11]); n 880             tmp_called_value_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(tstate, mod_consts[10]);
893         } 881         }
894 882
895         if (tmp_called_value_1 == NULL) { 883         if (tmp_called_value_1 == NULL) {
896             assert(HAS_ERROR_OCCURRED(tstate)); 884             assert(HAS_ERROR_OCCURRED(tstate));
897 885
960     Py_DECREF(tmp_for_loop_1__for_iterator); 948     Py_DECREF(tmp_for_loop_1__for_iterator);
961     tmp_for_loop_1__for_iterator = NULL; 949     tmp_for_loop_1__for_iterator = NULL;
962     { 950     {
963         PyObject *tmp_called_value_2; 951         PyObject *tmp_called_value_2;
964         PyObject *tmp_call_result_2; 952         PyObject *tmp_call_result_2;
n 965         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[15]); n 953         tmp_called_value_2 = LOOKUP_BUILTIN(mod_consts[14]);
966         assert(tmp_called_value_2 != NULL); 954         assert(tmp_called_value_2 != NULL);
967         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 29; 955         frame_f74fdd307da91c25f7bbde638ce123a0->m_frame.f_lineno = 29;
t 968         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tstate, tmp_called_value_2, mod_consts[16]); t 956         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tstate, tmp_called_value_2, mod_consts[15]);
969 957
970         if (tmp_call_result_2 == NULL) { 958         if (tmp_call_result_2 == NULL) {
971             assert(HAS_ERROR_OCCURRED(tstate)); 959             assert(HAS_ERROR_OCCURRED(tstate));
972 960
973             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb); 961             FETCH_ERROR_OCCURRED(tstate, &exception_type, &exception_value, &exception_tb);