Construct CallCompiledObjectMethodPosArgsVariable

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000260000000260000000CPython 2.7Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)26472805072.9230769230769257.0CPython 2.7106750927194.46153846153845404.4667210768822Nuitka (historic)93851032316.0416.5083710434161Nuitka (master)88902301437.53846153846143421.1278572082674Nuitka (develop)88902307559.0769230769231421.12785160745443Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000220000000220000000240000000240000000CPython 3.5Nuitka (historic)Nuitka (master)Nuitka (develop)Nuitka (factory)25163484572.9230769230769257.0CPython 3.50194.46153846153845504.11538461538464Nuitka (historic)101755564316.0404.187390403711Nuitka (master)97953636437.53846153846143407.9210342875698Nuitka (develop)97947612559.0769230769231407.92695009417014Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks

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 getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin
    inst.compiled_method(a, b, c, d, e, f)
    inst.compiled_method(a, c, b, d, e, f)
    inst.compiled_method(a, b, c, d, f, e)
# construct_alternative



for x in xrange(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 getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a non-compiled function, which is
    # being optimized separately.
# construct_begin



# construct_alternative
    pass
# construct_end

for x in xrange(50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
37     inst = C() 37     inst = C()
38 38
39     # This is supposed to make a call to a non-compiled function, which is 39     # This is supposed to make a call to a non-compiled function, which is
40     # being optimized separately. 40     # being optimized separately.
41 # construct_begin 41 # construct_begin
n 42     inst.compiled_method(a, b, c, d, e, f) n
43     inst.compiled_method(a, c, b, d, e, f)
44     inst.compiled_method(a, b, c, d, f, e)
45 # construct_alternative
46 42
47 43
t t 44  
45 # construct_alternative
46     pass
47 # construct_end
48 48
49 for x in xrange(50000): 49 for x in xrange(50000):
50     calledRepeatedly() 50     calledRepeatedly()
51 51
52 print("OK.") 52 print("OK.")

Context Diff of Generated Code


Construct
Baseline
512     NUITKA_MAY_BE_UNUSED int exception_lineno = -1; 512     NUITKA_MAY_BE_UNUSED int exception_lineno = -1;
513     PyObject *exception_keeper_type_1; 513     PyObject *exception_keeper_type_1;
514     PyObject *exception_keeper_value_1; 514     PyObject *exception_keeper_value_1;
515     PyTracebackObject *exception_keeper_tb_1; 515     PyTracebackObject *exception_keeper_tb_1;
516     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1; 516     NUITKA_MAY_BE_UNUSED int exception_keeper_lineno_1;
n 517     PyObject *tmp_args_element_name_1; n
518     PyObject *tmp_args_element_name_2;
519     PyObject *tmp_args_element_name_3;
520     PyObject *tmp_args_element_name_4;
521     PyObject *tmp_args_element_name_5;
522     PyObject *tmp_args_element_name_6;
523     PyObject *tmp_args_element_name_7;
524     PyObject *tmp_args_element_name_8;
525     PyObject *tmp_args_element_name_9;
526     PyObject *tmp_args_element_name_10;
527     PyObject *tmp_args_element_name_11;
528     PyObject *tmp_args_element_name_12;
529     PyObject *tmp_args_element_name_13;
530     PyObject *tmp_args_element_name_14;
531     PyObject *tmp_args_element_name_15;
532     PyObject *tmp_args_element_name_16;
533     PyObject *tmp_args_element_name_17;
534     PyObject *tmp_args_element_name_18;
535     PyObject *tmp_assign_source_1; 517     PyObject *tmp_assign_source_1;
536     PyObject *tmp_assign_source_2; 518     PyObject *tmp_assign_source_2;
537     PyObject *tmp_assign_source_3; 519     PyObject *tmp_assign_source_3;
538     PyObject *tmp_assign_source_4; 520     PyObject *tmp_assign_source_4;
539     PyObject *tmp_assign_source_5; 521     PyObject *tmp_assign_source_5;
544     PyObject *tmp_called_name_3; 526     PyObject *tmp_called_name_3;
545     PyObject *tmp_called_name_4; 527     PyObject *tmp_called_name_4;
546     PyObject *tmp_called_name_5; 528     PyObject *tmp_called_name_5;
547     PyObject *tmp_called_name_6; 529     PyObject *tmp_called_name_6;
548     PyObject *tmp_called_name_7; 530     PyObject *tmp_called_name_7;
n 549     PyObject *tmp_called_name_8; n
550     PyObject *tmp_called_name_9;
551     PyObject *tmp_called_name_10;
552     PyObject *tmp_frame_locals; 531     PyObject *tmp_frame_locals;
553     PyObject *tmp_return_value; 532     PyObject *tmp_return_value;
n 554     PyObject *tmp_source_name_1; n
555     PyObject *tmp_source_name_2;
556     PyObject *tmp_source_name_3;
557     NUITKA_MAY_BE_UNUSED PyObject *tmp_unused;
558     static PyFrameObject *cache_frame_function = NULL; 533     static PyFrameObject *cache_frame_function = NULL;
559 534
560     PyFrameObject *frame_function; 535     PyFrameObject *frame_function;
561 536
562     tmp_return_value = NULL; 537     tmp_return_value = NULL;
828         goto frame_exception_exit_1; 803         goto frame_exception_exit_1;
829     } 804     }
830     assert( var_inst == NULL ); 805     assert( var_inst == NULL );
831     var_inst = tmp_assign_source_7; 806     var_inst = tmp_assign_source_7;
832 807
n 833     tmp_source_name_1 = var_inst; n
834  
835     tmp_called_name_8 = LOOKUP_ATTRIBUTE( tmp_source_name_1, const_str_plain_compiled_method );
836     if ( tmp_called_name_8 == NULL )
837     {
838         assert( ERROR_OCCURRED() );
839  
840         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
841  
842  
843         exception_lineno = 42;
844         goto frame_exception_exit_1;
845     }
846     tmp_args_element_name_1 = var_a;
847  
848     if ( tmp_args_element_name_1 == NULL )
849     {
850         Py_DECREF( tmp_called_name_8 );
851         exception_type = PyExc_UnboundLocalError;
852         Py_INCREF( exception_type );
853         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
854         exception_tb = NULL;
855         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
856         CHAIN_EXCEPTION( exception_value );
857  
858         exception_lineno = 42;
859         goto frame_exception_exit_1;
860     }
861  
862     tmp_args_element_name_2 = var_b;
863  
864     if ( tmp_args_element_name_2 == NULL )
865     {
866         Py_DECREF( tmp_called_name_8 );
867         exception_type = PyExc_UnboundLocalError;
868         Py_INCREF( exception_type );
869         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
870         exception_tb = NULL;
871         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
872         CHAIN_EXCEPTION( exception_value );
873  
874         exception_lineno = 42;
875         goto frame_exception_exit_1;
876     }
877  
878     tmp_args_element_name_3 = var_c;
879  
880     if ( tmp_args_element_name_3 == NULL )
881     {
882         Py_DECREF( tmp_called_name_8 );
883         exception_type = PyExc_UnboundLocalError;
884         Py_INCREF( exception_type );
885         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
886         exception_tb = NULL;
887         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
888         CHAIN_EXCEPTION( exception_value );
889  
890         exception_lineno = 42;
891         goto frame_exception_exit_1;
892     }
893  
894     tmp_args_element_name_4 = var_d;
895  
896     if ( tmp_args_element_name_4 == NULL )
897     {
898         Py_DECREF( tmp_called_name_8 );
899         exception_type = PyExc_UnboundLocalError;
900         Py_INCREF( exception_type );
901         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
902         exception_tb = NULL;
903         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
904         CHAIN_EXCEPTION( exception_value );
905  
906         exception_lineno = 42;
907         goto frame_exception_exit_1;
908     }
909  
910     tmp_args_element_name_5 = var_e;
911  
912     if ( tmp_args_element_name_5 == NULL )
913     {
914         Py_DECREF( tmp_called_name_8 );
915         exception_type = PyExc_UnboundLocalError;
916         Py_INCREF( exception_type );
917         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
918         exception_tb = NULL;
919         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
920         CHAIN_EXCEPTION( exception_value );
921  
922         exception_lineno = 42;
923         goto frame_exception_exit_1;
924     }
925  
926     tmp_args_element_name_6 = var_f;
927  
928     if ( tmp_args_element_name_6 == NULL )
929     {
930         Py_DECREF( tmp_called_name_8 );
931         exception_type = PyExc_UnboundLocalError;
932         Py_INCREF( exception_type );
933         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
934         exception_tb = NULL;
935         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
936         CHAIN_EXCEPTION( exception_value );
937  
938         exception_lineno = 42;
939         goto frame_exception_exit_1;
940     }
941  
942     frame_function->f_lineno = 42;
943     {
944         PyObject *call_args[] = { tmp_args_element_name_1, tmp_args_element_name_2, tmp_args_element_name_3, tmp_args_element_name_4, tmp_args_element_name_5, tmp_args_element_name_6 };
945         tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_8, call_args );
946     }
947  
948     Py_DECREF( tmp_called_name_8 );
949     if ( tmp_unused == NULL )
950     {
951         assert( ERROR_OCCURRED() );
952  
953         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
954  
955  
956         exception_lineno = 42;
957         goto frame_exception_exit_1;
958     }
959     Py_DECREF( tmp_unused );
960     tmp_source_name_2 = var_inst;
961  
962     if ( tmp_source_name_2 == NULL )
963     {
964  
965         exception_type = PyExc_UnboundLocalError;
966         Py_INCREF( exception_type );
967         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
968         exception_tb = NULL;
969         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
970         CHAIN_EXCEPTION( exception_value );
971  
972         exception_lineno = 43;
973         goto frame_exception_exit_1;
974     }
975  
976     tmp_called_name_9 = LOOKUP_ATTRIBUTE( tmp_source_name_2, const_str_plain_compiled_method );
977     if ( tmp_called_name_9 == NULL )
978     {
979         assert( ERROR_OCCURRED() );
980  
981         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
982  
983  
984         exception_lineno = 43;
985         goto frame_exception_exit_1;
986     }
987     tmp_args_element_name_7 = var_a;
988  
989     if ( tmp_args_element_name_7 == NULL )
990     {
991         Py_DECREF( tmp_called_name_9 );
992         exception_type = PyExc_UnboundLocalError;
993         Py_INCREF( exception_type );
994         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
995         exception_tb = NULL;
996         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
997         CHAIN_EXCEPTION( exception_value );
998  
999         exception_lineno = 43;
1000         goto frame_exception_exit_1;
1001     }
1002  
1003     tmp_args_element_name_8 = var_c;
1004  
1005     if ( tmp_args_element_name_8 == NULL )
1006     {
1007         Py_DECREF( tmp_called_name_9 );
1008         exception_type = PyExc_UnboundLocalError;
1009         Py_INCREF( exception_type );
1010         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
1011         exception_tb = NULL;
1012         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1013         CHAIN_EXCEPTION( exception_value );
1014  
1015         exception_lineno = 43;
1016         goto frame_exception_exit_1;
1017     }
1018  
1019     tmp_args_element_name_9 = var_b;
1020  
1021     if ( tmp_args_element_name_9 == NULL )
1022     {
1023         Py_DECREF( tmp_called_name_9 );
1024         exception_type = PyExc_UnboundLocalError;
1025         Py_INCREF( exception_type );
1026         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
1027         exception_tb = NULL;
1028         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1029         CHAIN_EXCEPTION( exception_value );
1030  
1031         exception_lineno = 43;
1032         goto frame_exception_exit_1;
1033     }
1034  
1035     tmp_args_element_name_10 = var_d;
1036  
1037     if ( tmp_args_element_name_10 == NULL )
1038     {
1039         Py_DECREF( tmp_called_name_9 );
1040         exception_type = PyExc_UnboundLocalError;
1041         Py_INCREF( exception_type );
1042         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
1043         exception_tb = NULL;
1044         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1045         CHAIN_EXCEPTION( exception_value );
1046  
1047         exception_lineno = 43;
1048         goto frame_exception_exit_1;
1049     }
1050  
1051     tmp_args_element_name_11 = var_e;
1052  
1053     if ( tmp_args_element_name_11 == NULL )
1054     {
1055         Py_DECREF( tmp_called_name_9 );
1056         exception_type = PyExc_UnboundLocalError;
1057         Py_INCREF( exception_type );
1058         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
1059         exception_tb = NULL;
1060         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1061         CHAIN_EXCEPTION( exception_value );
1062  
1063         exception_lineno = 43;
1064         goto frame_exception_exit_1;
1065     }
1066  
1067     tmp_args_element_name_12 = var_f;
1068  
1069     if ( tmp_args_element_name_12 == NULL )
1070     {
1071         Py_DECREF( tmp_called_name_9 );
1072         exception_type = PyExc_UnboundLocalError;
1073         Py_INCREF( exception_type );
1074         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
1075         exception_tb = NULL;
1076         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1077         CHAIN_EXCEPTION( exception_value );
1078  
1079         exception_lineno = 43;
1080         goto frame_exception_exit_1;
1081     }
1082  
1083     frame_function->f_lineno = 43;
1084     {
1085         PyObject *call_args[] = { tmp_args_element_name_7, tmp_args_element_name_8, tmp_args_element_name_9, tmp_args_element_name_10, tmp_args_element_name_11, tmp_args_element_name_12 };
1086         tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_9, call_args );
1087     }
1088  
1089     Py_DECREF( tmp_called_name_9 );
1090     if ( tmp_unused == NULL )
1091     {
1092         assert( ERROR_OCCURRED() );
1093  
1094         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
1095  
1096  
1097         exception_lineno = 43;
1098         goto frame_exception_exit_1;
1099     }
1100     Py_DECREF( tmp_unused );
1101     tmp_source_name_3 = var_inst;
1102  
1103     if ( tmp_source_name_3 == NULL )
1104     {
1105  
1106         exception_type = PyExc_UnboundLocalError;
1107         Py_INCREF( exception_type );
1108         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "inst" );
1109         exception_tb = NULL;
1110         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1111         CHAIN_EXCEPTION( exception_value );
1112  
1113         exception_lineno = 44;
1114         goto frame_exception_exit_1;
1115     }
1116  
1117     tmp_called_name_10 = LOOKUP_ATTRIBUTE( tmp_source_name_3, const_str_plain_compiled_method );
1118     if ( tmp_called_name_10 == NULL )
1119     {
1120         assert( ERROR_OCCURRED() );
1121  
1122         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
1123  
1124  
1125         exception_lineno = 44;
1126         goto frame_exception_exit_1;
1127     }
1128     tmp_args_element_name_13 = var_a;
1129  
1130     if ( tmp_args_element_name_13 == NULL )
1131     {
1132         Py_DECREF( tmp_called_name_10 );
1133         exception_type = PyExc_UnboundLocalError;
1134         Py_INCREF( exception_type );
1135         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "a" );
1136         exception_tb = NULL;
1137         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1138         CHAIN_EXCEPTION( exception_value );
1139  
1140         exception_lineno = 44;
1141         goto frame_exception_exit_1;
1142     }
1143  
1144     tmp_args_element_name_14 = var_b;
1145  
1146     if ( tmp_args_element_name_14 == NULL )
1147     {
1148         Py_DECREF( tmp_called_name_10 );
1149         exception_type = PyExc_UnboundLocalError;
1150         Py_INCREF( exception_type );
1151         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "b" );
1152         exception_tb = NULL;
1153         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1154         CHAIN_EXCEPTION( exception_value );
1155  
1156         exception_lineno = 44;
1157         goto frame_exception_exit_1;
1158     }
1159  
1160     tmp_args_element_name_15 = var_c;
1161  
1162     if ( tmp_args_element_name_15 == NULL )
1163     {
1164         Py_DECREF( tmp_called_name_10 );
1165         exception_type = PyExc_UnboundLocalError;
1166         Py_INCREF( exception_type );
1167         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "c" );
1168         exception_tb = NULL;
1169         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1170         CHAIN_EXCEPTION( exception_value );
1171  
1172         exception_lineno = 44;
1173         goto frame_exception_exit_1;
1174     }
1175  
1176     tmp_args_element_name_16 = var_d;
1177  
1178     if ( tmp_args_element_name_16 == NULL )
1179     {
1180         Py_DECREF( tmp_called_name_10 );
1181         exception_type = PyExc_UnboundLocalError;
1182         Py_INCREF( exception_type );
1183         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "d" );
1184         exception_tb = NULL;
1185         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1186         CHAIN_EXCEPTION( exception_value );
1187  
1188         exception_lineno = 44;
1189         goto frame_exception_exit_1;
1190     }
1191  
1192     tmp_args_element_name_17 = var_f;
1193  
1194     if ( tmp_args_element_name_17 == NULL )
1195     {
1196         Py_DECREF( tmp_called_name_10 );
1197         exception_type = PyExc_UnboundLocalError;
1198         Py_INCREF( exception_type );
1199         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "f" );
1200         exception_tb = NULL;
1201         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1202         CHAIN_EXCEPTION( exception_value );
1203  
1204         exception_lineno = 44;
1205         goto frame_exception_exit_1;
1206     }
1207  
1208     tmp_args_element_name_18 = var_e;
1209  
1210     if ( tmp_args_element_name_18 == NULL )
1211     {
1212         Py_DECREF( tmp_called_name_10 );
1213         exception_type = PyExc_UnboundLocalError;
1214         Py_INCREF( exception_type );
1215         exception_value = PyUnicode_FromFormat( "local variable '%s' referenced before assignment", "e" );
1216         exception_tb = NULL;
1217         NORMALIZE_EXCEPTION( &exception_type, &exception_value, &exception_tb );
1218         CHAIN_EXCEPTION( exception_value );
1219  
1220         exception_lineno = 44;
1221         goto frame_exception_exit_1;
1222     }
1223  
1224     frame_function->f_lineno = 44;
1225     {
1226         PyObject *call_args[] = { tmp_args_element_name_13, tmp_args_element_name_14, tmp_args_element_name_15, tmp_args_element_name_16, tmp_args_element_name_17, tmp_args_element_name_18 };
1227         tmp_unused = CALL_FUNCTION_WITH_ARGS6( tmp_called_name_10, call_args );
1228     }
1229  
1230     Py_DECREF( tmp_called_name_10 );
1231     if ( tmp_unused == NULL )
1232     {
1233         assert( ERROR_OCCURRED() );
1234  
1235         FETCH_ERROR_OCCURRED( &exception_type, &exception_value, &exception_tb );
1236  
1237  
1238         exception_lineno = 44;
1239         goto frame_exception_exit_1;
1240     }
1241     Py_DECREF( tmp_unused );
1242 808
1243 #if 0 809 #if 0
1244     RESTORE_FRAME_EXCEPTION( frame_function ); 810     RESTORE_FRAME_EXCEPTION( frame_function );
1245 #endif 811 #endif
1246     // Put the previous frame back on top. 812     // Put the previous frame back on top.
1428     Py_XDECREF( var_e ); 994     Py_XDECREF( var_e );
1429     var_e = NULL; 995     var_e = NULL;
1430 996
1431     Py_XDECREF( var_f ); 997     Py_XDECREF( var_f );
1432     var_f = NULL; 998     var_f = NULL;
t 1433   t
1434     Py_XDECREF( var_inst );
1435     var_inst = NULL;
1436 999
1437     // Re-raise. 1000     // Re-raise.
1438     exception_type = exception_keeper_type_1; 1001     exception_type = exception_keeper_type_1;
1439     exception_value = exception_keeper_value_1; 1002     exception_value = exception_keeper_value_1;
1440     exception_tb = exception_keeper_tb_1; 1003     exception_tb = exception_keeper_tb_1;