890 if (code) { |
890 if (code) { |
891 /* compiled code */ |
891 /* compiled code */ |
892 switch (nargs) { |
892 switch (nargs) { |
893 case 0: |
893 case 0: |
894 rslt = (*code)(anObject, aSymbol, searchClass, &dummy); |
894 rslt = (*code)(anObject, aSymbol, searchClass, &dummy); |
895 break; |
895 break; |
896 |
896 |
897 case 1: |
897 case 1: |
898 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0]); |
898 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0]); |
899 break; |
899 break; |
900 |
900 |
901 case 2: |
901 case 2: |
902 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0], ap[1]); |
902 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0], ap[1]); |
903 break; |
903 break; |
904 |
904 |
905 case 3: |
905 case 3: |
906 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0], ap[1], ap[2]); |
906 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, ap[0], ap[1], ap[2]); |
907 break; |
907 break; |
908 |
908 |
909 case 4: |
909 case 4: |
910 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
910 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
911 ap[0], ap[1], ap[2], ap[3]); |
911 ap[0], ap[1], ap[2], ap[3]); |
912 break; |
912 break; |
913 |
913 |
914 case 5: |
914 case 5: |
915 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
915 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
916 ap[0], ap[1], ap[2], ap[3], ap[4]); |
916 ap[0], ap[1], ap[2], ap[3], ap[4]); |
917 break; |
917 break; |
918 |
918 |
919 case 6: |
919 case 6: |
920 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
920 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
921 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]); |
921 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]); |
922 break; |
922 break; |
923 |
923 |
924 case 7: |
924 case 7: |
925 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
925 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
926 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]); |
926 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]); |
927 break; |
927 break; |
928 |
928 |
929 case 8: |
929 case 8: |
930 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
930 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
931 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7]); |
931 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7]); |
932 break; |
932 break; |
933 |
933 |
934 case 9: |
934 case 9: |
935 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
935 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
936 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8]); |
936 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8]); |
937 break; |
937 break; |
938 |
938 |
939 case 10: |
939 case 10: |
940 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
940 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
941 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
941 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
942 ap[9]); |
942 ap[9]); |
943 break; |
943 break; |
944 |
944 |
945 case 11: |
945 case 11: |
946 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
946 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
947 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
947 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
948 ap[9], ap[10]); |
948 ap[9], ap[10]); |
949 break; |
949 break; |
950 |
950 |
951 case 12: |
951 case 12: |
952 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
952 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
953 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
953 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
954 ap[9], ap[10], ap[11]); |
954 ap[9], ap[10], ap[11]); |
955 break; |
955 break; |
956 |
956 |
957 case 13: |
957 case 13: |
958 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
958 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
959 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
959 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
960 ap[9], ap[10], ap[11], ap[12]); |
960 ap[9], ap[10], ap[11], ap[12]); |
961 break; |
961 break; |
962 |
962 |
963 case 14: |
963 case 14: |
964 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
964 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
965 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
965 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
966 ap[9], ap[10], ap[11], ap[12], ap[13]); |
966 ap[9], ap[10], ap[11], ap[12], ap[13]); |
967 break; |
967 break; |
968 |
968 |
969 case 15: |
969 case 15: |
970 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
970 rslt = (*code)(anObject, aSymbol, searchClass, &dummy, |
971 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
971 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], ap[7], ap[8], |
972 ap[9], ap[10], ap[11], ap[12], ap[13], ap[14]); |
972 ap[9], ap[10], ap[11], ap[12], ap[13], ap[14]); |
973 break; |
973 break; |
974 } |
974 } |
975 } else { |
975 } else { |
976 /* interpreted code */ |
976 /* interpreted code */ |
977 #ifdef PASS_ARG_POINTER |
977 #ifdef PASS_ARG_POINTER |
978 rslt = __interpret(self, nargs, anObject, aSymbol, searchClass, &dummy, ap); |
978 rslt = __interpret(self, nargs, anObject, aSymbol, searchClass, &dummy, ap); |
979 #else |
979 #else |
980 switch (nargs) { |
980 switch (nargs) { |
981 case 0: |
981 case 0: |
982 rslt = __interpret(self, 0, anObject, aSymbol, searchClass, &dummy); |
982 rslt = __interpret(self, 0, anObject, aSymbol, searchClass, &dummy); |
983 break; |
983 break; |
984 |
984 |
985 case 1: |
985 case 1: |
986 rslt = __interpret(self, 1, anObject, aSymbol, searchClass, &dummy, |
986 rslt = __interpret(self, 1, anObject, aSymbol, searchClass, &dummy, |
987 ap[0]); |
987 ap[0]); |
988 break; |
988 break; |
989 |
989 |
990 case 2: |
990 case 2: |
991 rslt = __interpret(self, 2, anObject, aSymbol, searchClass, &dummy, |
991 rslt = __interpret(self, 2, anObject, aSymbol, searchClass, &dummy, |
992 ap[0], ap[1]); |
992 ap[0], ap[1]); |
993 break; |
993 break; |
994 |
994 |
995 case 3: |
995 case 3: |
996 rslt = __interpret(self, 3, anObject, aSymbol, searchClass, &dummy, |
996 rslt = __interpret(self, 3, anObject, aSymbol, searchClass, &dummy, |
997 ap[0], ap[1], ap[2]); |
997 ap[0], ap[1], ap[2]); |
998 break; |
998 break; |
999 |
999 |
1000 case 4: |
1000 case 4: |
1001 rslt = __interpret(self, 4, anObject, aSymbol, searchClass, &dummy, |
1001 rslt = __interpret(self, 4, anObject, aSymbol, searchClass, &dummy, |
1002 ap[0], ap[1], ap[2], ap[3]); |
1002 ap[0], ap[1], ap[2], ap[3]); |
1003 break; |
1003 break; |
1004 |
1004 |
1005 case 5: |
1005 case 5: |
1006 rslt = __interpret(self, 5, anObject, aSymbol, searchClass, &dummy, |
1006 rslt = __interpret(self, 5, anObject, aSymbol, searchClass, &dummy, |
1007 ap[0], ap[1], ap[2], ap[3], ap[4]); |
1007 ap[0], ap[1], ap[2], ap[3], ap[4]); |
1008 break; |
1008 break; |
1009 |
1009 |
1010 case 6: |
1010 case 6: |
1011 rslt = __interpret(self, 6, anObject, aSymbol, searchClass, &dummy, |
1011 rslt = __interpret(self, 6, anObject, aSymbol, searchClass, &dummy, |
1012 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]); |
1012 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5]); |
1013 break; |
1013 break; |
1014 |
1014 |
1015 case 7: |
1015 case 7: |
1016 rslt = __interpret(self, 7, anObject, aSymbol, searchClass, &dummy, |
1016 rslt = __interpret(self, 7, anObject, aSymbol, searchClass, &dummy, |
1017 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]); |
1017 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6]); |
1018 break; |
1018 break; |
1019 |
1019 |
1020 case 8: |
1020 case 8: |
1021 rslt = __interpret(self, 8, anObject, aSymbol, searchClass, &dummy, |
1021 rslt = __interpret(self, 8, anObject, aSymbol, searchClass, &dummy, |
1022 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1022 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1023 ap[7]); |
1023 ap[7]); |
1024 break; |
1024 break; |
1025 |
1025 |
1026 case 9: |
1026 case 9: |
1027 rslt = __interpret(self, 9, anObject, aSymbol, searchClass, &dummy, |
1027 rslt = __interpret(self, 9, anObject, aSymbol, searchClass, &dummy, |
1028 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1028 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1029 ap[7], ap[8]); |
1029 ap[7], ap[8]); |
1030 break; |
1030 break; |
1031 |
1031 |
1032 case 10: |
1032 case 10: |
1033 rslt = __interpret(self, 10, anObject, aSymbol, searchClass, &dummy, |
1033 rslt = __interpret(self, 10, anObject, aSymbol, searchClass, &dummy, |
1034 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1034 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1035 ap[7], ap[8], ap[9]); |
1035 ap[7], ap[8], ap[9]); |
1036 break; |
1036 break; |
1037 |
1037 |
1038 case 11: |
1038 case 11: |
1039 rslt = __interpret(self, 11, anObject, aSymbol, searchClass, &dummy, |
1039 rslt = __interpret(self, 11, anObject, aSymbol, searchClass, &dummy, |
1040 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1040 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1041 ap[7], ap[8], ap[9], ap[10]); |
1041 ap[7], ap[8], ap[9], ap[10]); |
1042 break; |
1042 break; |
1043 |
1043 |
1044 case 12: |
1044 case 12: |
1045 rslt = __interpret(self, 12, anObject, aSymbol, searchClass, &dummy, |
1045 rslt = __interpret(self, 12, anObject, aSymbol, searchClass, &dummy, |
1046 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1046 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1047 ap[7], ap[8], ap[9], ap[11]); |
1047 ap[7], ap[8], ap[9], ap[10], ap[11]); |
1048 break; |
1048 break; |
1049 |
1049 |
1050 case 13: |
1050 case 13: |
1051 rslt = __interpret(self, 13, anObject, aSymbol, searchClass, &dummy, |
1051 rslt = __interpret(self, 13, anObject, aSymbol, searchClass, &dummy, |
1052 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1052 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1053 ap[7], ap[8], ap[9], ap[11], ap[12]); |
1053 ap[7], ap[8], ap[9], ap[10], ap[11], ap[12]); |
1054 break; |
1054 break; |
1055 |
1055 |
1056 case 14: |
1056 case 14: |
1057 rslt = __interpret(self, 14, anObject, aSymbol, searchClass, &dummy, |
1057 rslt = __interpret(self, 14, anObject, aSymbol, searchClass, &dummy, |
1058 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1058 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1059 ap[7], ap[8], ap[9], ap[11], ap[12], ap[13]); |
1059 ap[7], ap[8], ap[9], ap[10], ap[11], ap[12], ap[13]); |
1060 break; |
1060 break; |
1061 |
1061 |
1062 case 15: |
1062 case 15: |
1063 rslt = __interpret(self, 15, anObject, aSymbol, searchClass, &dummy, |
1063 rslt = __interpret(self, 15, anObject, aSymbol, searchClass, &dummy, |
1064 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1064 ap[0], ap[1], ap[2], ap[3], ap[4], ap[5], ap[6], |
1065 ap[7], ap[8], ap[9], ap[11], ap[12], ap[13], ap[14]); |
1065 ap[7], ap[8], ap[9], ap[10], ap[11], ap[12], ap[13], ap[14]); |
1066 break; |
1066 break; |
1067 } |
1067 } |
1068 #endif |
1068 #endif |
1069 } |
1069 } |
1070 #ifdef CONTEXT_DEBUG |
1070 #ifdef CONTEXT_DEBUG |
1071 if (sav != __thisContext) { |
1071 if (sav != __thisContext) { |
1072 if (code) { |
1072 if (code) { |
1073 printf("CONTEXT BOTCH after execution of %x\n", code); |
1073 printf("CONTEXT BOTCH after execution of %x\n", code); |
1074 } else { |
1074 } else { |
1075 printf("CONTEXT BOTCH after execution of interpreted method\n"); |
1075 printf("CONTEXT BOTCH after execution of interpreted method\n"); |
1076 printf("code now: %x\n", __MethodInstPtr(self)->m_code); |
1076 printf("code now: %x\n", __MethodInstPtr(self)->m_code); |
1077 } |
1077 } |
1078 printf("context before:\n"); |
1078 printf("context before:\n"); |
1079 __dumpObject__(sav); |
1079 __dumpObject__(sav); |
1080 printf("context now:\n"); |
1080 printf("context now:\n"); |
1081 __dumpObject__(__thisContext); |
1081 __dumpObject__(__thisContext); |
1082 } |
1082 } |
1083 #endif |
1083 #endif |
1084 RETURN (rslt); |
1084 RETURN (rslt); |
1085 } |
1085 } |
1086 } |
1086 } |
1087 badArgs: ; |
1087 badArgs: ; |
1088 %}. |
1088 %}. |
1089 (argArray isMemberOf:Array) ifFalse:[ |
1089 (argArray isMemberOf:Array) ifFalse:[ |