Construct CallCompiledObjectMethodPosArgsConstant1

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsConstant1 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000100000000100000000110000000110000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)11340558688.11538461538461257.0CPython 2.728255339240.03846153846155442.54585166113424Nuitka (master)31152057391.96153846153845436.2337853164278Nuitka (develop)31152057543.8846153846154436.2337853164278Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant1Ticks Construct CallCompiledObjectMethodPosArgsConstant1 00100000001000000020000000200000003000000030000000400000004000000050000000500000006000000060000000700000007000000080000000800000009000000090000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)9938586188.95192307692307257.0CPython 3.834105401242.31730769230768419.3148989046765Nuitka (master)34404465395.6826923076923418.57129901389715Nuitka (develop)34404465549.0480769230769418.57129901389715Nuitka (factory)Construct CallCompiledObjectMethodPosArgsConstant1Ticks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a):
        return a

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")
    inst.compiled_method("some")
    inst.compiled_method("some")

# 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):
        return a

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") n 32  
33     inst.compiled_method("some") 33  
34     inst.compiled_method("some") 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[35]; 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[35]; 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 < 35; 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 < 35; 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_204ccd2269219dfbce89c1e58ad405c2; 84 static PyCodeObject *codeobj_204ccd2269219dfbce89c1e58ad405c2;
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[6]; CHECK_OBJECT(module_filename_obj); n 89     module_filename_obj = mod_consts[4]; CHECK_OBJECT(module_filename_obj);
90     codeobj_6a30fc7b6151ae834d87a74e57a40d41 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[31], NULL, NULL, 0, 0, 0); 90     codeobj_6a30fc7b6151ae834d87a74e57a40d41 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[30], NULL, NULL, 0, 0, 0);
91     codeobj_fe62d870c555868fea88f48fcd4528f2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[32], NULL, 0, 0, 0); 91     codeobj_fe62d870c555868fea88f48fcd4528f2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[2], mod_consts[31], NULL, 0, 0, 0);
92     codeobj_31ec26cecef1b852f30881dd1a33571b = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[24], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_31ec26cecef1b852f30881dd1a33571b = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[23], mod_consts[32], NULL, 0, 0, 0);
93     codeobj_204ccd2269219dfbce89c1e58ad405c2 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[3], mod_consts[34], NULL, 2, 0, 0); 93     codeobj_204ccd2269219dfbce89c1e58ad405c2 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[20], mod_consts[33], NULL, 2, 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
457     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 457     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
458     PyObject *exception_type = NULL; 458     PyObject *exception_type = NULL;
459     PyObject *exception_value = NULL; 459     PyObject *exception_value = NULL;
460     PyTracebackObject *exception_tb = NULL; 460     PyTracebackObject *exception_tb = NULL;
461     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 461     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 462     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
463     static struct Nuitka_FrameObject *cache_frame_31ec26cecef1b852f30881dd1a33571b = NULL; 462     static struct Nuitka_FrameObject *cache_frame_31ec26cecef1b852f30881dd1a33571b = NULL;
464     PyObject *tmp_return_value = NULL; 463     PyObject *tmp_return_value = NULL;
465     PyObject *exception_keeper_type_1; 464     PyObject *exception_keeper_type_1;
466     PyObject *exception_keeper_value_1; 465     PyObject *exception_keeper_value_1;
467     PyTracebackObject *exception_keeper_tb_1; 466     PyTracebackObject *exception_keeper_tb_1;
527             type_description_1 = "o"; 526             type_description_1 = "o";
528             goto frame_exception_exit_1; 527             goto frame_exception_exit_1;
529         } 528         }
530         assert(var_inst == NULL); 529         assert(var_inst == NULL);
531         var_inst = tmp_assign_source_1; 530         var_inst = tmp_assign_source_1;
n 532     } n
533     {
534         PyObject *tmp_called_instance_1;
535         PyObject *tmp_call_result_1;
536         CHECK_OBJECT(var_inst);
537         tmp_called_instance_1 = var_inst;
538         frame_31ec26cecef1b852f30881dd1a33571b->m_frame.f_lineno = 32;
539         tmp_call_result_1 = CALL_METHOD_WITH_SINGLE_ARG(
540             tmp_called_instance_1,
541             mod_consts[3],
542             PyTuple_GET_ITEM(mod_consts[4], 0)
543         );
544  
545         if (tmp_call_result_1 == NULL) {
546             assert(ERROR_OCCURRED());
547  
548             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
549  
550  
551             exception_lineno = 32;
552             type_description_1 = "o";
553             goto frame_exception_exit_1;
554         }
555         Py_DECREF(tmp_call_result_1);
556     }
557     {
558         PyObject *tmp_called_instance_2;
559         PyObject *tmp_call_result_2;
560         CHECK_OBJECT(var_inst);
561         tmp_called_instance_2 = var_inst;
562         frame_31ec26cecef1b852f30881dd1a33571b->m_frame.f_lineno = 33;
563         tmp_call_result_2 = CALL_METHOD_WITH_SINGLE_ARG(
564             tmp_called_instance_2,
565             mod_consts[3],
566             PyTuple_GET_ITEM(mod_consts[4], 0)
567         );
568  
569         if (tmp_call_result_2 == NULL) {
570             assert(ERROR_OCCURRED());
571  
572             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
573  
574  
575             exception_lineno = 33;
576             type_description_1 = "o";
577             goto frame_exception_exit_1;
578         }
579         Py_DECREF(tmp_call_result_2);
580     }
581     {
582         PyObject *tmp_called_instance_3;
583         PyObject *tmp_call_result_3;
584         CHECK_OBJECT(var_inst);
585         tmp_called_instance_3 = var_inst;
586         frame_31ec26cecef1b852f30881dd1a33571b->m_frame.f_lineno = 34;
587         tmp_call_result_3 = CALL_METHOD_WITH_SINGLE_ARG(
588             tmp_called_instance_3,
589             mod_consts[3],
590             PyTuple_GET_ITEM(mod_consts[4], 0)
591         );
592  
593         if (tmp_call_result_3 == NULL) {
594             assert(ERROR_OCCURRED());
595  
596             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
597  
598  
599             exception_lineno = 34;
600             type_description_1 = "o";
601             goto frame_exception_exit_1;
602         }
603         Py_DECREF(tmp_call_result_3);
604     } 531     }
605 532
606 #if 0 533 #if 0
607     RESTORE_FRAME_EXCEPTION(frame_31ec26cecef1b852f30881dd1a33571b); 534     RESTORE_FRAME_EXCEPTION(frame_31ec26cecef1b852f30881dd1a33571b);
608 #endif 535 #endif
672     exception_type = NULL; 599     exception_type = NULL;
673     exception_value = NULL; 600     exception_value = NULL;
674     exception_tb = NULL; 601     exception_tb = NULL;
675     exception_lineno = 0; 602     exception_lineno = 0;
676 603
n 677     Py_XDECREF(var_inst); n
678     var_inst = NULL;
679     // Re-raise. 604     // Re-raise.
680     exception_type = exception_keeper_type_1; 605     exception_type = exception_keeper_type_1;
681     exception_value = exception_keeper_value_1; 606     exception_value = exception_keeper_value_1;
682     exception_tb = exception_keeper_tb_1; 607     exception_tb = exception_keeper_tb_1;
683     exception_lineno = exception_keeper_lineno_1; 608     exception_lineno = exception_keeper_lineno_1;
708 633
709 634
710 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 635 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
711     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 636     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
712         impl___main__$$$function__1_compiled_method, 637         impl___main__$$$function__1_compiled_method,
n 713         mod_consts[3], n 638         mod_consts[20],
714 #if PYTHON_VERSION >= 0x300 639 #if PYTHON_VERSION >= 0x300
n 715         mod_consts[22], n 640         mod_consts[21],
716 #endif 641 #endif
717         codeobj_204ccd2269219dfbce89c1e58ad405c2, 642         codeobj_204ccd2269219dfbce89c1e58ad405c2,
718         NULL, 643         NULL,
719 #if PYTHON_VERSION >= 0x300 644 #if PYTHON_VERSION >= 0x300
720         NULL, 645         NULL,
733 658
734 659
735 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() { 660 static PyObject *MAKE_FUNCTION___main__$$$function__2_calledRepeatedly() {
736     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 661     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
737         impl___main__$$$function__2_calledRepeatedly, 662         impl___main__$$$function__2_calledRepeatedly,
n 738         mod_consts[24], n 663         mod_consts[23],
739 #if PYTHON_VERSION >= 0x300 664 #if PYTHON_VERSION >= 0x300
740         NULL, 665         NULL,
741 #endif 666 #endif
742         codeobj_31ec26cecef1b852f30881dd1a33571b, 667         codeobj_31ec26cecef1b852f30881dd1a33571b,
743         NULL, 668         NULL,
1140 1065
1141     // Module code. 1066     // Module code.
1142     { 1067     {
1143         PyObject *tmp_assign_source_1; 1068         PyObject *tmp_assign_source_1;
1144         tmp_assign_source_1 = Py_None; 1069         tmp_assign_source_1 = Py_None;
n 1145         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1); n 1070         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[3], tmp_assign_source_1);
1146     } 1071     }
1147     { 1072     {
1148         PyObject *tmp_assign_source_2; 1073         PyObject *tmp_assign_source_2;
n 1149         tmp_assign_source_2 = mod_consts[6]; n 1074         tmp_assign_source_2 = mod_consts[4];
1150         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2); 1075         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_2);
1151     } 1076     }
1152     { 1077     {
1153         PyObject *tmp_assign_source_3; 1078         PyObject *tmp_assign_source_3;
1154         tmp_assign_source_3 = Py_None; 1079         tmp_assign_source_3 = Py_None;
n 1155         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3); n 1080         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_3);
1156     } 1081     }
1157     { 1082     {
1158         PyObject *tmp_assign_source_4; 1083         PyObject *tmp_assign_source_4;
1159         tmp_assign_source_4 = PyDict_New(); 1084         tmp_assign_source_4 = PyDict_New();
n 1160         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4); n 1085         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_4);
1161     } 1086     }
1162     { 1087     {
1163         PyObject *tmp_assign_source_5; 1088         PyObject *tmp_assign_source_5;
1164         { 1089         {
1165             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1090             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1166             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[10]); n 1091             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[8]);
1167         } 1092         }
1168 1093
1169         assert(!(tmp_assign_source_5 == NULL)); 1094         assert(!(tmp_assign_source_5 == NULL));
n 1170         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_5); n 1095         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_5);
1171     } 1096     }
1172     // Frame without reuse. 1097     // Frame without reuse.
1173     frame_6a30fc7b6151ae834d87a74e57a40d41 = MAKE_MODULE_FRAME(codeobj_6a30fc7b6151ae834d87a74e57a40d41, module___main__); 1098     frame_6a30fc7b6151ae834d87a74e57a40d41 = MAKE_MODULE_FRAME(codeobj_6a30fc7b6151ae834d87a74e57a40d41, module___main__);
1174 1099
1175     // Push the new frame as the currently active one, and we should be exclusively 1100     // Push the new frame as the currently active one, and we should be exclusively
1180     // Framed code: 1105     // Framed code:
1181     // Tried code: 1106     // Tried code:
1182     { 1107     {
1183         PyObject *tmp_assign_source_6; 1108         PyObject *tmp_assign_source_6;
1184         PyObject *tmp_dircall_arg1_1; 1109         PyObject *tmp_dircall_arg1_1;
n 1185         tmp_dircall_arg1_1 = mod_consts[11]; n 1110         tmp_dircall_arg1_1 = mod_consts[9];
1186         Py_INCREF(tmp_dircall_arg1_1); 1111         Py_INCREF(tmp_dircall_arg1_1);
1187 1112
1188         { 1113         {
1189             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1114             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1190             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1115             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1220         int tmp_truth_name_1; 1145         int tmp_truth_name_1;
1221         PyObject *tmp_type_arg_1; 1146         PyObject *tmp_type_arg_1;
1222         PyObject *tmp_expression_name_1; 1147         PyObject *tmp_expression_name_1;
1223         PyObject *tmp_subscript_name_1; 1148         PyObject *tmp_subscript_name_1;
1224         PyObject *tmp_bases_name_1; 1149         PyObject *tmp_bases_name_1;
n 1225         tmp_key_name_1 = mod_consts[12]; n 1150         tmp_key_name_1 = mod_consts[10];
1226         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1151         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1227         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1152         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1228         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1153         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1229         assert(!(tmp_res == -1)); 1154         assert(!(tmp_res == -1));
1230         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1155         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1234             goto condexpr_false_1; 1159             goto condexpr_false_1;
1235         } 1160         }
1236         condexpr_true_1:; 1161         condexpr_true_1:;
1237         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1162         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1238         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1163         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1239         tmp_key_name_2 = mod_consts[12]; n 1164         tmp_key_name_2 = mod_consts[10];
1240         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2); 1165         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2);
1241         if (tmp_metaclass_name_1 == NULL) { 1166         if (tmp_metaclass_name_1 == NULL) {
1242             assert(ERROR_OCCURRED()); 1167             assert(ERROR_OCCURRED());
1243 1168
1244             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1169             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1269             goto condexpr_false_2; 1194             goto condexpr_false_2;
1270         } 1195         }
1271         condexpr_true_2:; 1196         condexpr_true_2:;
1272         CHECK_OBJECT(tmp_class_creation_1__bases); 1197         CHECK_OBJECT(tmp_class_creation_1__bases);
1273         tmp_expression_name_1 = tmp_class_creation_1__bases; 1198         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1274         tmp_subscript_name_1 = mod_consts[13]; n 1199         tmp_subscript_name_1 = mod_consts[11];
1275         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1200         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1276         if (tmp_type_arg_1 == NULL) { 1201         if (tmp_type_arg_1 == NULL) {
1277             assert(ERROR_OCCURRED()); 1202             assert(ERROR_OCCURRED());
1278 1203
1279             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1204             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1320     } 1245     }
1321     { 1246     {
1322         nuitka_bool tmp_condition_result_3; 1247         nuitka_bool tmp_condition_result_3;
1323         PyObject *tmp_key_name_3; 1248         PyObject *tmp_key_name_3;
1324         PyObject *tmp_dict_arg_name_3; 1249         PyObject *tmp_dict_arg_name_3;
n 1325         tmp_key_name_3 = mod_consts[12]; n 1250         tmp_key_name_3 = mod_consts[10];
1326         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1251         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1327         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1252         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1328         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1253         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1329         assert(!(tmp_res == -1)); 1254         assert(!(tmp_res == -1));
1330         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1255         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1335         } 1260         }
1336     } 1261     }
1337     branch_yes_1:; 1262     branch_yes_1:;
1338     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1263     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1339     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1264     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1340     tmp_dictdel_key = mod_consts[12]; n 1265     tmp_dictdel_key = mod_consts[10];
1341     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1266     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1342     if (tmp_result == false) { 1267     if (tmp_result == false) {
1343         assert(ERROR_OCCURRED()); 1268         assert(ERROR_OCCURRED());
1344 1269
1345         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1270         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1353     { 1278     {
1354         nuitka_bool tmp_condition_result_4; 1279         nuitka_bool tmp_condition_result_4;
1355         PyObject *tmp_expression_name_2; 1280         PyObject *tmp_expression_name_2;
1356         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1281         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1357         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1282         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1358         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[14]); n 1283         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[12]);
1359         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1284         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1360         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1285         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1361             goto branch_yes_2; 1286             goto branch_yes_2;
1362         } else { 1287         } else {
1363             goto branch_no_2; 1288             goto branch_no_2;
1371         PyObject *tmp_args_name_1; 1296         PyObject *tmp_args_name_1;
1372         PyObject *tmp_tuple_element_1; 1297         PyObject *tmp_tuple_element_1;
1373         PyObject *tmp_kwargs_name_1; 1298         PyObject *tmp_kwargs_name_1;
1374         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1299         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1375         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1300         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1376         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[14]); n 1301         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[12]);
1377         if (tmp_called_name_1 == NULL) { 1302         if (tmp_called_name_1 == NULL) {
1378             assert(ERROR_OCCURRED()); 1303             assert(ERROR_OCCURRED());
1379 1304
1380             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1305             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1381 1306
1413         nuitka_bool tmp_condition_result_5; 1338         nuitka_bool tmp_condition_result_5;
1414         PyObject *tmp_operand_name_1; 1339         PyObject *tmp_operand_name_1;
1415         PyObject *tmp_expression_name_4; 1340         PyObject *tmp_expression_name_4;
1416         CHECK_OBJECT(tmp_class_creation_1__prepared); 1341         CHECK_OBJECT(tmp_class_creation_1__prepared);
1417         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1342         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1418         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[15]); n 1343         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[13]);
1419         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1344         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1420         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1345         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1421         if (tmp_res == -1) { 1346         if (tmp_res == -1) {
1422             assert(ERROR_OCCURRED()); 1347             assert(ERROR_OCCURRED());
1423 1348
1444         PyObject *tmp_tuple_element_2; 1369         PyObject *tmp_tuple_element_2;
1445         PyObject *tmp_getattr_target_1; 1370         PyObject *tmp_getattr_target_1;
1446         PyObject *tmp_getattr_attr_1; 1371         PyObject *tmp_getattr_attr_1;
1447         PyObject *tmp_getattr_default_1; 1372         PyObject *tmp_getattr_default_1;
1448         tmp_raise_type_1 = PyExc_TypeError; 1373         tmp_raise_type_1 = PyExc_TypeError;
n 1449         tmp_left_name_1 = mod_consts[16]; n 1374         tmp_left_name_1 = mod_consts[14];
1450         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1375         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1451         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1376         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1452         tmp_getattr_attr_1 = mod_consts[17]; n 1377         tmp_getattr_attr_1 = mod_consts[15];
1453         tmp_getattr_default_1 = mod_consts[18]; 1378         tmp_getattr_default_1 = mod_consts[16];
1454         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1379         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1455         if (tmp_tuple_element_2 == NULL) { 1380         if (tmp_tuple_element_2 == NULL) {
1456             assert(ERROR_OCCURRED()); 1381             assert(ERROR_OCCURRED());
1457 1382
1458             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1383             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1469             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1394             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1470             CHECK_OBJECT(tmp_class_creation_1__prepared); 1395             CHECK_OBJECT(tmp_class_creation_1__prepared);
1471             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1396             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1472             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1397             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1473             assert(!(tmp_expression_name_5 == NULL)); 1398             assert(!(tmp_expression_name_5 == NULL));
n 1474             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[17]); n 1399             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[15]);
1475             Py_DECREF(tmp_expression_name_5); 1400             Py_DECREF(tmp_expression_name_5);
1476             if (tmp_tuple_element_2 == NULL) { 1401             if (tmp_tuple_element_2 == NULL) {
1477                 assert(ERROR_OCCURRED()); 1402                 assert(ERROR_OCCURRED());
1478 1403
1479                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1404                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1531             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1456             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1532             Py_INCREF(tmp_set_locals_1); 1457             Py_INCREF(tmp_set_locals_1);
1533         } 1458         }
1534         // Tried code: 1459         // Tried code:
1535         // Tried code: 1460         // Tried code:
n 1536         tmp_dictset_value = mod_consts[19]; n 1461         tmp_dictset_value = mod_consts[17];
1537         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value); 1462         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[18], tmp_dictset_value);
1538         if (tmp_res != 0) { 1463         if (tmp_res != 0) {
1539             assert(ERROR_OCCURRED()); 1464             assert(ERROR_OCCURRED());
1540 1465
1541             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1466             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1542 1467
1544             exception_lineno = 22; 1469             exception_lineno = 22;
1545 1470
1546             goto try_except_handler_3; 1471             goto try_except_handler_3;
1547         } 1472         }
1548         tmp_dictset_value = mod_consts[2]; 1473         tmp_dictset_value = mod_consts[2];
n 1549         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value); n 1474         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
1550         if (tmp_res != 0) { 1475         if (tmp_res != 0) {
1551             assert(ERROR_OCCURRED()); 1476             assert(ERROR_OCCURRED());
1552 1477
1553             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1478             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1554 1479
1586         // Framed code: 1511         // Framed code:
1587 1512
1588 1513
1589         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1514         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1590 1515
n 1591         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[3], tmp_dictset_value); n 1516         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
1592         Py_DECREF(tmp_dictset_value); 1517         Py_DECREF(tmp_dictset_value);
1593         if (tmp_res != 0) { 1518         if (tmp_res != 0) {
1594             assert(ERROR_OCCURRED()); 1519             assert(ERROR_OCCURRED());
1595 1520
1596             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1521             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1659             nuitka_bool tmp_condition_result_6; 1584             nuitka_bool tmp_condition_result_6;
1660             PyObject *tmp_compexpr_left_1; 1585             PyObject *tmp_compexpr_left_1;
1661             PyObject *tmp_compexpr_right_1; 1586             PyObject *tmp_compexpr_right_1;
1662             CHECK_OBJECT(tmp_class_creation_1__bases); 1587             CHECK_OBJECT(tmp_class_creation_1__bases);
1663             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1588             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 1664             tmp_compexpr_right_1 = mod_consts[11]; n 1589             tmp_compexpr_right_1 = mod_consts[9];
1665             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1590             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
1666             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1591             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
1667                 assert(ERROR_OCCURRED()); 1592                 assert(ERROR_OCCURRED());
1668 1593
1669                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1594                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1679                 goto branch_no_4; 1604                 goto branch_no_4;
1680             } 1605             }
1681             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1606             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
1682         } 1607         }
1683         branch_yes_4:; 1608         branch_yes_4:;
n 1684         tmp_dictset_value = mod_consts[11]; n 1609         tmp_dictset_value = mod_consts[9];
1685         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1610         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[22], tmp_dictset_value);
1686         if (tmp_res != 0) { 1611         if (tmp_res != 0) {
1687             assert(ERROR_OCCURRED()); 1612             assert(ERROR_OCCURRED());
1688 1613
1689             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1614             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1690 1615
1837         PyObject *tmp_assign_source_13; 1762         PyObject *tmp_assign_source_13;
1838 1763
1839 1764
1840         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly(); 1765         tmp_assign_source_13 = MAKE_FUNCTION___main__$$$function__2_calledRepeatedly();
1841 1766
n 1842         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_13); n 1767         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[23], tmp_assign_source_13);
1843     } 1768     }
1844     { 1769     {
1845         PyObject *tmp_assign_source_14; 1770         PyObject *tmp_assign_source_14;
1846         PyObject *tmp_name_name_1; 1771         PyObject *tmp_name_name_1;
1847         PyObject *tmp_globals_arg_name_1; 1772         PyObject *tmp_globals_arg_name_1;
1848         PyObject *tmp_locals_arg_name_1; 1773         PyObject *tmp_locals_arg_name_1;
1849         PyObject *tmp_fromlist_name_1; 1774         PyObject *tmp_fromlist_name_1;
1850         PyObject *tmp_level_name_1; 1775         PyObject *tmp_level_name_1;
n 1851         tmp_name_name_1 = mod_consts[25]; n 1776         tmp_name_name_1 = mod_consts[24];
1852         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 1777         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
1853         tmp_locals_arg_name_1 = Py_None; 1778         tmp_locals_arg_name_1 = Py_None;
1854         tmp_fromlist_name_1 = Py_None; 1779         tmp_fromlist_name_1 = Py_None;
n 1855         tmp_level_name_1 = mod_consts[13]; n 1780         tmp_level_name_1 = mod_consts[11];
1856         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 40; 1781         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 40;
1857         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1); 1782         tmp_assign_source_14 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1);
1858         assert(!(tmp_assign_source_14 == NULL)); 1783         assert(!(tmp_assign_source_14 == NULL));
n 1859         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[25], tmp_assign_source_14); n 1784         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[24], tmp_assign_source_14);
1860     } 1785     }
1861     { 1786     {
1862         PyObject *tmp_assign_source_15; 1787         PyObject *tmp_assign_source_15;
1863         PyObject *tmp_iter_arg_1; 1788         PyObject *tmp_iter_arg_1;
1864         PyObject *tmp_called_instance_1; 1789         PyObject *tmp_called_instance_1;
n 1865         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[25]); n 1790         tmp_called_instance_1 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[24]);
1866 1791
1867         if (unlikely(tmp_called_instance_1 == NULL)) { 1792         if (unlikely(tmp_called_instance_1 == NULL)) {
n 1868             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[25]); n 1793             tmp_called_instance_1 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[24]);
1869         } 1794         }
1870 1795
1871         assert(!(tmp_called_instance_1 == NULL)); 1796         assert(!(tmp_called_instance_1 == NULL));
1872         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 41; 1797         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 41;
1873         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2( 1798         tmp_iter_arg_1 = CALL_METHOD_WITH_ARGS2(
1874             tmp_called_instance_1, 1799             tmp_called_instance_1,
n 1875             mod_consts[26], n 1800             mod_consts[25],
1876             &PyTuple_GET_ITEM(mod_consts[27], 0) 1801             &PyTuple_GET_ITEM(mod_consts[26], 0)
1877         ); 1802         );
1878 1803
1879         if (tmp_iter_arg_1 == NULL) { 1804         if (tmp_iter_arg_1 == NULL) {
1880             assert(ERROR_OCCURRED()); 1805             assert(ERROR_OCCURRED());
1881 1806
1931     } 1856     }
1932     { 1857     {
1933         PyObject *tmp_assign_source_17; 1858         PyObject *tmp_assign_source_17;
1934         CHECK_OBJECT(tmp_for_loop_1__iter_value); 1859         CHECK_OBJECT(tmp_for_loop_1__iter_value);
1935         tmp_assign_source_17 = tmp_for_loop_1__iter_value; 1860         tmp_assign_source_17 = tmp_for_loop_1__iter_value;
n 1936         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[28], tmp_assign_source_17); n 1861         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[27], tmp_assign_source_17);
1937     } 1862     }
1938     { 1863     {
1939         PyObject *tmp_called_name_3; 1864         PyObject *tmp_called_name_3;
1940         PyObject *tmp_call_result_1; 1865         PyObject *tmp_call_result_1;
n 1941         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[24]); n 1866         tmp_called_name_3 = GET_STRING_DICT_VALUE(moduledict___main__, (Nuitka_StringObject *)mod_consts[23]);
1942 1867
1943         if (unlikely(tmp_called_name_3 == NULL)) { 1868         if (unlikely(tmp_called_name_3 == NULL)) {
n 1944             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[24]); n 1869             tmp_called_name_3 = GET_MODULE_VARIABLE_VALUE_FALLBACK(mod_consts[23]);
1945         } 1870         }
1946 1871
1947         if (tmp_called_name_3 == NULL) { 1872         if (tmp_called_name_3 == NULL) {
1948             assert(ERROR_OCCURRED()); 1873             assert(ERROR_OCCURRED());
1949 1874
2012     Py_DECREF(tmp_for_loop_1__for_iterator); 1937     Py_DECREF(tmp_for_loop_1__for_iterator);
2013     tmp_for_loop_1__for_iterator = NULL; 1938     tmp_for_loop_1__for_iterator = NULL;
2014     { 1939     {
2015         PyObject *tmp_called_name_4; 1940         PyObject *tmp_called_name_4;
2016         PyObject *tmp_call_result_2; 1941         PyObject *tmp_call_result_2;
n 2017         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[29]); n 1942         tmp_called_name_4 = LOOKUP_BUILTIN(mod_consts[28]);
2018         assert(tmp_called_name_4 != NULL); 1943         assert(tmp_called_name_4 != NULL);
2019         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 44; 1944         frame_6a30fc7b6151ae834d87a74e57a40d41->m_frame.f_lineno = 44;
t 2020         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[30]); t 1945         tmp_call_result_2 = CALL_FUNCTION_WITH_POSARGS1(tmp_called_name_4, mod_consts[29]);
2021 1946
2022         if (tmp_call_result_2 == NULL) { 1947         if (tmp_call_result_2 == NULL) {
2023             assert(ERROR_OCCURRED()); 1948             assert(ERROR_OCCURRED());
2024 1949
2025             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1950             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);