Construct CallCompiledObjectMethodPosArgsConstant6

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)21030026088.11538461538461257.0CPython 2.768523395240.03846153846155423.5962967617751Nuitka (main)68523690391.96153846153845423.59595011912967Nuitka (develop)68523690543.8846153846154423.59595011912967Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant6Ticks Construct CallCompiledObjectMethodPosArgsConstant6 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)18620222088.11538461538461257.0CPython 3.873729770240.03846153846155406.26606535832184Nuitka (main)73730150391.96153846153845406.26556104722306Nuitka (develop)73730150543.8846153846154406.26556104722306Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant6Ticks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def calledRepeatedly():
    inst = C()

    # This is supposed to make a call to a compiled method, 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



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

print("OK.")

Source Code without Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def calledRepeatedly():
    inst = C()

    # This is supposed to make a call to a compiled method, 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
27     inst = C() 27     inst = C()
28 28
29     # This is supposed to make a call to a compiled method, which is 29     # This is supposed to make a call to a compiled method, 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 import itertools 40 import itertools
41 for x in itertools.repeat(None, 50000): 41 for x in itertools.repeat(None, 50000):
42     calledRepeatedly() 42     calledRepeatedly()
43 43

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[37]; n 36 static PyObject *mod_consts[34];
37 #ifndef __NUITKA_NO_ASSERT__ 37 #ifndef __NUITKA_NO_ASSERT__
n 38 static Py_hash_t mod_consts_hash[37]; n 38 static Py_hash_t mod_consts_hash[34];
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(&mod_consts[0], UNTRANSLATE("__main__")); 49         loadConstantsBlob(&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 < 37; i++) { n 53         for(int i = 0; i < 34; i++) {
54             mod_consts_hash[i] = DEEP_HASH(mod_consts[i]); 54             mod_consts_hash[i] = DEEP_HASH(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__(void) { 69 void checkModuleConstants___main__(void) {
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 < 37; i++) { n 73     for(int i = 0; i < 34; i++) {
74         assert(mod_consts_hash[i] == DEEP_HASH(mod_consts[i])); 74         assert(mod_consts_hash[i] == DEEP_HASH(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
84 static PyCodeObject *codeobj_f1cc9690f3ece08a05525e466ce9b538; 84 static PyCodeObject *codeobj_f1cc9690f3ece08a05525e466ce9b538;
85 /* For use in "MainProgram.c". */ 85 /* For use in "MainProgram.c". */
86 PyCodeObject *codeobj_main = NULL; 86 PyCodeObject *codeobj_main = NULL;
87 87
88 static void createModuleCodeObjects(void) { 88 static void createModuleCodeObjects(void) {
n 89     module_filename_obj = mod_consts[8]; CHECK_OBJECT(module_filename_obj); n 89     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
90     codeobj_cd80c7b5b6b884026eef3902adb77f47 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[33], NULL, NULL, 0, 0, 0); 90     codeobj_cd80c7b5b6b884026eef3902adb77f47 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_5c837cb02753891138d916f474a577e2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[34], NULL, 0, 0, 0); 91     codeobj_5c837cb02753891138d916f474a577e2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_48916af1564e9234e6db50f641ee6d4d = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[26], mod_consts[35], NULL, 0, 0, 0); 92     codeobj_48916af1564e9234e6db50f641ee6d4d = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0);
93     codeobj_f1cc9690f3ece08a05525e466ce9b538 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[36], NULL, 7, 0, 0); 93     codeobj_f1cc9690f3ece08a05525e466ce9b538 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[20], mod_consts[33], NULL, 7, 0, 0);
94 } 94 }
95 95
96 // The module function declarations. 96 // The module function declarations.
97 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars); 97 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars);
98 98
489     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 489     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
490     PyObject *exception_type = NULL; 490     PyObject *exception_type = NULL;
491     PyObject *exception_value = NULL; 491     PyObject *exception_value = NULL;
492     PyTracebackObject *exception_tb = NULL; 492     PyTracebackObject *exception_tb = NULL;
493     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 493     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 494     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
495     static struct Nuitka_FrameObject *cache_frame_48916af1564e9234e6db50f641ee6d4d = NULL; 494     static struct Nuitka_FrameObject *cache_frame_48916af1564e9234e6db50f641ee6d4d = NULL;
496     PyObject *tmp_return_value = NULL; 495     PyObject *tmp_return_value = NULL;
497     PyObject *exception_keeper_type_1; 496     PyObject *exception_keeper_type_1;
498     PyObject *exception_keeper_value_1; 497     PyObject *exception_keeper_value_1;
499     PyTracebackObject *exception_keeper_tb_1; 498     PyTracebackObject *exception_keeper_tb_1;
559             type_description_1 = "o"; 558             type_description_1 = "o";
560             goto frame_exception_exit_1; 559             goto frame_exception_exit_1;
561         } 560         }
562         assert(var_inst == NULL); 561         assert(var_inst == NULL);
563         var_inst = tmp_assign_source_1; 562         var_inst = tmp_assign_source_1;
n 564     } n
565     {
566         PyObject *tmp_called_instance_1;
567         PyObject *tmp_call_result_1;
568         CHECK_OBJECT(var_inst);
569         tmp_called_instance_1 = var_inst;
570         frame_48916af1564e9234e6db50f641ee6d4d->m_frame.f_lineno = 32;
571         tmp_call_result_1 = CALL_METHOD_WITH_ARGS6(
572             tmp_called_instance_1,
573             mod_consts[3],
574             &PyTuple_GET_ITEM(mod_consts[4], 0)
575         );
576  
577         if (tmp_call_result_1 == NULL) {
578             assert(ERROR_OCCURRED());
579  
580             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
581  
582  
583             exception_lineno = 32;
584             type_description_1 = "o";
585             goto frame_exception_exit_1;
586         }
587         Py_DECREF(tmp_call_result_1);
588     }
589     {
590         PyObject *tmp_called_instance_2;
591         PyObject *tmp_call_result_2;
592         CHECK_OBJECT(var_inst);
593         tmp_called_instance_2 = var_inst;
594         frame_48916af1564e9234e6db50f641ee6d4d->m_frame.f_lineno = 33;
595         tmp_call_result_2 = CALL_METHOD_WITH_ARGS6(
596             tmp_called_instance_2,
597             mod_consts[3],
598             &PyTuple_GET_ITEM(mod_consts[5], 0)
599         );
600  
601         if (tmp_call_result_2 == NULL) {
602             assert(ERROR_OCCURRED());
603  
604             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
605  
606  
607             exception_lineno = 33;
608             type_description_1 = "o";
609             goto frame_exception_exit_1;
610         }
611         Py_DECREF(tmp_call_result_2);
612     }
613     {
614         PyObject *tmp_called_instance_3;
615         PyObject *tmp_call_result_3;
616         CHECK_OBJECT(var_inst);
617         tmp_called_instance_3 = var_inst;
618         frame_48916af1564e9234e6db50f641ee6d4d->m_frame.f_lineno = 34;
619         tmp_call_result_3 = CALL_METHOD_WITH_ARGS6(
620             tmp_called_instance_3,
621             mod_consts[3],
622             &PyTuple_GET_ITEM(mod_consts[6], 0)
623         );
624  
625         if (tmp_call_result_3 == NULL) {
626             assert(ERROR_OCCURRED());
627  
628             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
629  
630  
631             exception_lineno = 34;
632             type_description_1 = "o";
633             goto frame_exception_exit_1;
634         }
635         Py_DECREF(tmp_call_result_3);
636     } 563     }
637 564
638 #if 0 565 #if 0
639     RESTORE_FRAME_EXCEPTION(frame_48916af1564e9234e6db50f641ee6d4d); 566     RESTORE_FRAME_EXCEPTION(frame_48916af1564e9234e6db50f641ee6d4d);
640 #endif 567 #endif
704     exception_type = NULL; 631     exception_type = NULL;
705     exception_value = NULL; 632     exception_value = NULL;
706     exception_tb = NULL; 633     exception_tb = NULL;
707     exception_lineno = 0; 634     exception_lineno = 0;
708 635
n 709     Py_XDECREF(var_inst); n
710     var_inst = NULL;
711     // Re-raise. 636     // Re-raise.
712     exception_type = exception_keeper_type_1; 637     exception_type = exception_keeper_type_1;
713     exception_value = exception_keeper_value_1; 638     exception_value = exception_keeper_value_1;
714     exception_tb = exception_keeper_tb_1; 639     exception_tb = exception_keeper_tb_1;
715     exception_lineno = exception_keeper_lineno_1; 640     exception_lineno = exception_keeper_lineno_1;
740 665
741 666
742 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 667 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
743     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 668     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
744         impl___main__$$$function__1_compiled_method, 669         impl___main__$$$function__1_compiled_method,
n 745         mod_consts[3], n 670         mod_consts[20],
746 #if PYTHON_VERSION >= 0x300 671 #if PYTHON_VERSION >= 0x300
n 747         mod_consts[24], n 672         mod_consts[21],
748 #endif 673 #endif
749         codeobj_f1cc9690f3ece08a05525e466ce9b538, 674         codeobj_f1cc9690f3ece08a05525e466ce9b538,
750         NULL, 675         NULL,
751 #if PYTHON_VERSION >= 0x300 676 #if PYTHON_VERSION >= 0x300
752         NULL, 677         NULL,
765 690
766 691
767 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() { 692 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() {
768     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 693     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
769         impl___main__$$$function__2_calledRepeatedly, 694         impl___main__$$$function__2_calledRepeatedly,
n 770         mod_consts[26], n 695         mod_consts[23],
771 #if PYTHON_VERSION >= 0x300 696 #if PYTHON_VERSION >= 0x300
772         NULL, 697         NULL,
773 #endif 698 #endif
774         codeobj_48916af1564e9234e6db50f641ee6d4d, 699         codeobj_48916af1564e9234e6db50f641ee6d4d,
775         NULL, 700         NULL,
1177 1102
1178     // Module code. 1103     // Module code.
1179     { 1104     {
1180         PyObject *tmp_assign_source_1; 1105         PyObject *tmp_assign_source_1;
1181         tmp_assign_source_1 = Py_None; 1106         tmp_assign_source_1 = Py_None;
n 1182         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_1); n 1107         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1183     } 1108     }
1184     { 1109     {
1185         PyObject *tmp_assign_source_2; 1110         PyObject *tmp_assign_source_2;
n 1186         tmp_assign_source_2 = mod_consts[8]; n 1111         tmp_assign_source_2 = mod_consts[4];
1187         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_2); 1112         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1188     } 1113     }
1189     { 1114     {
1190         PyObject *tmp_assign_source_3; 1115         PyObject *tmp_assign_source_3;
1191         tmp_assign_source_3 = Py_None; 1116         tmp_assign_source_3 = Py_None;
n 1192         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_3); n 1117         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1193     } 1118     }
1194     { 1119     {
1195         PyObject *tmp_assign_source_4; 1120         PyObject *tmp_assign_source_4;
1196         tmp_assign_source_4 = PyDict_New(); 1121         tmp_assign_source_4 = PyDict_New();
n 1197         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[11], tmp_assign_source_4); n 1122         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1198     } 1123     }
1199     { 1124     {
1200         PyObject *tmp_assign_source_5; 1125         PyObject *tmp_assign_source_5;
1201         { 1126         {
1202             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1127             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1203             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[12]); n 1128             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1204         } 1129         }
1205 1130
1206         assert(!(tmp_assign_source_5 == NULL)); 1131         assert(!(tmp_assign_source_5 == NULL));
n 1207         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[12], tmp_assign_source_5); n 1132         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1208     } 1133     }
1209     // Frame without reuse. 1134     // Frame without reuse.
1210     frame_cd80c7b5b6b884026eef3902adb77f47 = MAKE_MODULE_FRAME(codeobj_cd80c7b5b6b884026eef3902adb77f47, module___main__); 1135     frame_cd80c7b5b6b884026eef3902adb77f47 = MAKE_MODULE_FRAME(codeobj_cd80c7b5b6b884026eef3902adb77f47, module___main__);
1211 1136
1212     // Push the new frame as the currently active one, and we should be exclusively 1137     // Push the new frame as the currently active one, and we should be exclusively
1217     // Framed code: 1142     // Framed code:
1218     // Tried code: 1143     // Tried code:
1219     { 1144     {
1220         PyObject *tmp_assign_source_6; 1145         PyObject *tmp_assign_source_6;
1221         PyObject *tmp_dircall_arg1_1; 1146         PyObject *tmp_dircall_arg1_1;
n 1222         tmp_dircall_arg1_1 = mod_consts[13]; n 1147         tmp_dircall_arg1_1 = mod_consts[9];
1223         Py_INCREF(tmp_dircall_arg1_1); 1148         Py_INCREF(tmp_dircall_arg1_1);
1224 1149
1225         { 1150         {
1226             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1151             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1227             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1152             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1257         int tmp_truth_name_1; 1182         int tmp_truth_name_1;
1258         PyObject *tmp_type_arg_1; 1183         PyObject *tmp_type_arg_1;
1259         PyObject *tmp_expression_value_1; 1184         PyObject *tmp_expression_value_1;
1260         PyObject *tmp_subscript_value_1; 1185         PyObject *tmp_subscript_value_1;
1261         PyObject *tmp_bases_value_1; 1186         PyObject *tmp_bases_value_1;
n 1262         tmp_key_value_1 = mod_consts[14]; n 1187         tmp_key_value_1 = mod_consts[10];
1263         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1188         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1264         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict; 1189         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict;
1265         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1); 1190         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1);
1266         assert(!(tmp_res == -1)); 1191         assert(!(tmp_res == -1));
1267         tmp_condition_result_1 = (tmp_res != 0) ? true : false; 1192         tmp_condition_result_1 = (tmp_res != 0) ? true : false;
1271             goto condexpr_false_1; 1196             goto condexpr_false_1;
1272         } 1197         }
1273         condexpr_true_1:; 1198         condexpr_true_1:;
1274         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1199         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1275         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict; 1200         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict;
n 1276         tmp_key_value_2 = mod_consts[14]; n 1201         tmp_key_value_2 = mod_consts[10];
1277         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2); 1202         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2);
1278         if (tmp_metaclass_value_1 == NULL) { 1203         if (tmp_metaclass_value_1 == NULL) {
1279             tmp_metaclass_value_1 = Py_None; 1204             tmp_metaclass_value_1 = Py_None;
1280         } 1205         }
1281         assert(!(tmp_metaclass_value_1 == NULL)); 1206         assert(!(tmp_metaclass_value_1 == NULL));
1301             goto condexpr_false_2; 1226             goto condexpr_false_2;
1302         } 1227         }
1303         condexpr_true_2:; 1228         condexpr_true_2:;
1304         CHECK_OBJECT(tmp_class_creation_1__bases); 1229         CHECK_OBJECT(tmp_class_creation_1__bases);
1305         tmp_expression_value_1 = tmp_class_creation_1__bases; 1230         tmp_expression_value_1 = tmp_class_creation_1__bases;
n 1306         tmp_subscript_value_1 = mod_consts[15]; n 1231         tmp_subscript_value_1 = mod_consts[11];
1307         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0); 1232         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0);
1308         if (tmp_type_arg_1 == NULL) { 1233         if (tmp_type_arg_1 == NULL) {
1309             assert(ERROR_OCCURRED()); 1234             assert(ERROR_OCCURRED());
1310 1235
1311             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1236             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1352     } 1277     }
1353     { 1278     {
1354         bool tmp_condition_result_3; 1279         bool tmp_condition_result_3;
1355         PyObject *tmp_key_value_3; 1280         PyObject *tmp_key_value_3;
1356         PyObject *tmp_dict_arg_value_3; 1281         PyObject *tmp_dict_arg_value_3;
n 1357         tmp_key_value_3 = mod_consts[14]; n 1282         tmp_key_value_3 = mod_consts[10];
1358         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1283         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1359         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict; 1284         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict;
1360         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3); 1285         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3);
1361         assert(!(tmp_res == -1)); 1286         assert(!(tmp_res == -1));
1362         tmp_condition_result_3 = (tmp_res != 0) ? true : false; 1287         tmp_condition_result_3 = (tmp_res != 0) ? true : false;
1367         } 1292         }
1368     } 1293     }
1369     branch_yes_1:; 1294     branch_yes_1:;
1370     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1295     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1371     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1296     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1372     tmp_dictdel_key = mod_consts[14]; n 1297     tmp_dictdel_key = mod_consts[10];
1373     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1298     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1374     if (tmp_result == false) { 1299     if (tmp_result == false) {
1375         assert(ERROR_OCCURRED()); 1300         assert(ERROR_OCCURRED());
1376 1301
1377         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1302         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1385     { 1310     {
1386         nuitka_bool tmp_condition_result_4; 1311         nuitka_bool tmp_condition_result_4;
1387         PyObject *tmp_expression_value_2; 1312         PyObject *tmp_expression_value_2;
1388         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1313         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1389         tmp_expression_value_2 = tmp_class_creation_1__metaclass; 1314         tmp_expression_value_2 = tmp_class_creation_1__metaclass;
n 1390         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[16]); n 1315         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[12]);
1391         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1316         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1392         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1317         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1393             goto branch_yes_2; 1318             goto branch_yes_2;
1394         } else { 1319         } else {
1395             goto branch_no_2; 1320             goto branch_no_2;
1403         PyObject *tmp_args_value_1; 1328         PyObject *tmp_args_value_1;
1404         PyObject *tmp_tuple_element_1; 1329         PyObject *tmp_tuple_element_1;
1405         PyObject *tmp_kwargs_value_1; 1330         PyObject *tmp_kwargs_value_1;
1406         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1331         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1407         tmp_expression_value_3 = tmp_class_creation_1__metaclass; 1332         tmp_expression_value_3 = tmp_class_creation_1__metaclass;
n 1408         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[16]); n 1333         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[12]);
1409         if (tmp_called_value_1 == NULL) { 1334         if (tmp_called_value_1 == NULL) {
1410             assert(ERROR_OCCURRED()); 1335             assert(ERROR_OCCURRED());
1411 1336
1412             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1337             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1413 1338
1445         bool tmp_condition_result_5; 1370         bool tmp_condition_result_5;
1446         PyObject *tmp_operand_value_1; 1371         PyObject *tmp_operand_value_1;
1447         PyObject *tmp_expression_value_4; 1372         PyObject *tmp_expression_value_4;
1448         CHECK_OBJECT(tmp_class_creation_1__prepared); 1373         CHECK_OBJECT(tmp_class_creation_1__prepared);
1449         tmp_expression_value_4 = tmp_class_creation_1__prepared; 1374         tmp_expression_value_4 = tmp_class_creation_1__prepared;
n 1450         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[17]); n 1375         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[13]);
1451         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False; 1376         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False;
1452         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1); 1377         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1);
1453         if (tmp_res == -1) { 1378         if (tmp_res == -1) {
1454             assert(ERROR_OCCURRED()); 1379             assert(ERROR_OCCURRED());
1455 1380
1476         PyObject *tmp_tuple_element_2; 1401         PyObject *tmp_tuple_element_2;
1477         PyObject *tmp_getattr_target_1; 1402         PyObject *tmp_getattr_target_1;
1478         PyObject *tmp_getattr_attr_1; 1403         PyObject *tmp_getattr_attr_1;
1479         PyObject *tmp_getattr_default_1; 1404         PyObject *tmp_getattr_default_1;
1480         tmp_raise_type_1 = PyExc_TypeError; 1405         tmp_raise_type_1 = PyExc_TypeError;
n 1481         tmp_left_value_1 = mod_consts[18]; n 1406         tmp_left_value_1 = mod_consts[14];
1482         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1407         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1483         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1408         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1484         tmp_getattr_attr_1 = mod_consts[19]; n 1409         tmp_getattr_attr_1 = mod_consts[15];
1485         tmp_getattr_default_1 = mod_consts[20]; 1410         tmp_getattr_default_1 = mod_consts[16];
1486         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1411         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1487         if (tmp_tuple_element_2 == NULL) { 1412         if (tmp_tuple_element_2 == NULL) {
1488             assert(ERROR_OCCURRED()); 1413             assert(ERROR_OCCURRED());
1489 1414
1490             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1415             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1501             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2); 1426             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2);
1502             CHECK_OBJECT(tmp_class_creation_1__prepared); 1427             CHECK_OBJECT(tmp_class_creation_1__prepared);
1503             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1428             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1504             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1429             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1505             assert(!(tmp_expression_value_5 == NULL)); 1430             assert(!(tmp_expression_value_5 == NULL));
n 1506             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[19]); n 1431             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[15]);
1507             Py_DECREF(tmp_expression_value_5); 1432             Py_DECREF(tmp_expression_value_5);
1508             if (tmp_tuple_element_2 == NULL) { 1433             if (tmp_tuple_element_2 == NULL) {
1509                 assert(ERROR_OCCURRED()); 1434                 assert(ERROR_OCCURRED());
1510 1435
1511                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1436                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1563             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1488             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1564             Py_INCREF(tmp_set_locals_1); 1489             Py_INCREF(tmp_set_locals_1);
1565         } 1490         }
1566         // Tried code: 1491         // Tried code:
1567         // Tried code: 1492         // Tried code:
n 1568         tmp_dictset_value = mod_consts[21]; n 1493         tmp_dictset_value = mod_consts[17];
1569         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value); 1494         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1570         if (tmp_res != 0) { 1495         if (tmp_res != 0) {
1571             assert(ERROR_OCCURRED()); 1496             assert(ERROR_OCCURRED());
1572 1497
1573             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1498             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1574 1499
1576             exception_lineno = 22; 1501             exception_lineno = 22;
1577 1502
1578             goto try_except_handler_3; 1503             goto try_except_handler_3;
1579         } 1504         }
1580         tmp_dictset_value = mod_consts[2]; 1505         tmp_dictset_value = mod_consts[2];
n 1581         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); n 1506         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
1582         if (tmp_res != 0) { 1507         if (tmp_res != 0) {
1583             assert(ERROR_OCCURRED()); 1508             assert(ERROR_OCCURRED());
1584 1509
1585             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1510             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1586 1511
1618         // Framed code: 1543         // Framed code:
1619 1544
1620 1545
1621         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1546         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1622 1547
n 1623         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1548         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1624         Py_DECREF(tmp_dictset_value); 1549         Py_DECREF(tmp_dictset_value);
1625         if (tmp_res != 0) { 1550         if (tmp_res != 0) {
1626             assert(ERROR_OCCURRED()); 1551             assert(ERROR_OCCURRED());
1627 1552
1628             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1553             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1691             nuitka_bool tmp_condition_result_6; 1616             nuitka_bool tmp_condition_result_6;
1692             PyObject *tmp_compexpr_left_1; 1617             PyObject *tmp_compexpr_left_1;
1693             PyObject *tmp_compexpr_right_1; 1618             PyObject *tmp_compexpr_right_1;
1694             CHECK_OBJECT(tmp_class_creation_1__bases); 1619             CHECK_OBJECT(tmp_class_creation_1__bases);
1695             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1620             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1696             tmp_compexpr_right_1 = mod_consts[13]; n 1621             tmp_compexpr_right_1 = mod_consts[9];
1697             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1622             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1698             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1623             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1699                 assert(ERROR_OCCURRED()); 1624                 assert(ERROR_OCCURRED());
1700 1625
1701                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1626                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1711                 goto branch_no_4; 1636                 goto branch_no_4;
1712             } 1637             }
1713             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1638             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1714         } 1639         }
1715         branch_yes_4:; 1640         branch_yes_4:;
n 1716         tmp_dictset_value = mod_consts[13]; n 1641         tmp_dictset_value = mod_consts[9];
1717         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[25], tmp_dictset_value); 1642         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1718         if (tmp_res != 0) { 1643         if (tmp_res != 0) {
1719             assert(ERROR_OCCURRED()); 1644             assert(ERROR_OCCURRED());
1720 1645
1721             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1646             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1722 1647
1872         PyObject *tmp_assign_source_13; 1797         PyObject *tmp_assign_source_13;
1873 1798
1874 1799
1875         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly(); 1800         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly();
1876 1801
n 1877         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[26], tmp_assign_source_13); n 1802         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[23], tmp_assign_source_13);
1878     } 1803     }
1879     { 1804     {
1880         PyObject *tmp_assign_source_14; 1805         PyObject *tmp_assign_source_14;
1881         PyObject *tmp_name_value_1; 1806         PyObject *tmp_name_value_1;
1882         PyObject *tmp_globals_arg_value_1; 1807         PyObject *tmp_globals_arg_value_1;
1883         PyObject *tmp_locals_arg_value_1; 1808         PyObject *tmp_locals_arg_value_1;
1884         PyObject *tmp_fromlist_value_1; 1809         PyObject *tmp_fromlist_value_1;
1885         PyObject *tmp_level_value_1; 1810         PyObject *tmp_level_value_1;
n 1886         tmp_name_value_1 = mod_consts[27]; n 1811         tmp_name_value_1 = mod_consts[24];
1887         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 1812         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
1888         tmp_locals_arg_value_1 = Py_None; 1813         tmp_locals_arg_value_1 = Py_None;
1889         tmp_fromlist_value_1 = Py_None; 1814         tmp_fromlist_value_1 = Py_None;
n 1890         tmp_level_value_1 = mod_consts[15]; n 1815         tmp_level_value_1 = mod_consts[11];
1891         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 40; 1816         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 40;
1892         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 1817         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
1893         assert(!(tmp_assign_source_14 == NULL)); 1818         assert(!(tmp_assign_source_14 == NULL));
n 1894         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[27], tmp_assign_source_14); n 1819         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1895     } 1820     }
1896     { 1821     {
1897         PyObject *tmp_assign_source_15; 1822         PyObject *tmp_assign_source_15;
1898         PyObject *tmp_iter_arg_1; 1823         PyObject *tmp_iter_arg_1;
1899         PyObject *tmp_called_instance_1; 1824         PyObject *tmp_called_instance_1;
n 1900         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[27]); n 1825         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[24]);
1901 1826
1902         if (unlikely(tmp_called_instance_1 == NULL)) { 1827         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1903             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[27]); n 1828             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[24]);
1904         } 1829         }
1905 1830
1906         assert(!(tmp_called_instance_1 == NULL)); 1831         assert(!(tmp_called_instance_1 == NULL));
1907         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 41; 1832         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 41;
1908         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1833         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1909             tmp_called_instance_1, 1834             tmp_called_instance_1,
n 1910             mod_consts[28], n 1835             mod_consts[25],
1911             &PyTuple_GET_ITEM(mod_consts[29], 0) 1836             &PyTuple_GET_ITEM(mod_consts[26], 0)
1912         ); 1837         );
1913 1838
1914         if (tmp_iter_arg_1 == NULL) { 1839         if (tmp_iter_arg_1 == NULL) {
1915             assert(ERROR_OCCURRED()); 1840             assert(ERROR_OCCURRED());
1916 1841
1966     } 1891     }
1967     { 1892     {
1968         PyObject *tmp_assign_source_17; 1893         PyObject *tmp_assign_source_17;
1969         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1894         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1970         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 1895         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 1971         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[30], tmp_assign_source_17); n 1896         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[27], tmp_assign_source_17);
1972     } 1897     }
1973     { 1898     {
1974         PyObject *tmp_called_value_3; 1899         PyObject *tmp_called_value_3;
1975         PyObject *tmp_call_result_1; 1900         PyObject *tmp_call_result_1;
n 1976         tmp_called_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[26]); n 1901         tmp_called_value_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[23]);
1977 1902
1978         if (unlikely(tmp_called_value_3 == NULL)) { 1903         if (unlikely(tmp_called_value_3 == NULL)) {
n 1979             tmp_called_value_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[26]); n 1904             tmp_called_value_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[23]);
1980         } 1905         }
1981 1906
1982         if (tmp_called_value_3 == NULL) { 1907         if (tmp_called_value_3 == NULL) {
1983             assert(ERROR_OCCURRED()); 1908             assert(ERROR_OCCURRED());
1984 1909
2047     Py_DECREF(tmp_for_loop_1__for_iterator); 1972     Py_DECREF(tmp_for_loop_1__for_iterator);
2048     tmp_for_loop_1__for_iterator = NULL; 1973     tmp_for_loop_1__for_iterator = NULL;
2049     { 1974     {
2050         PyObject *tmp_called_value_4; 1975         PyObject *tmp_called_value_4;
2051         PyObject *tmp_call_result_2; 1976         PyObject *tmp_call_result_2;
n 2052         tmp_called_value_4 = LOOKUP_BUILTIN(mod_consts[31]); n 1977         tmp_called_value_4 = LOOKUP_BUILTIN(mod_consts[28]);
2053         assert(tmp_called_value_4 != NULL); 1978         assert(tmp_called_value_4 != NULL);
2054         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 44; 1979         frame_cd80c7b5b6b884026eef3902adb77f47->m_frame.f_lineno = 44;
t 2055         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_4, mod_consts[32]); t 1980         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_value_4, mod_consts[29]);
2056 1981
2057         if (tmp_call_result_2 == NULL) { 1982         if (tmp_call_result_2 == NULL) {
2058             assert(ERROR_OCCURRED()); 1983             assert(ERROR_OCCURRED());
2059 1984
2060             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1985             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);