comparison src/bytecode.c @ 28497:334ebb7a551c

(Fbyte_code): Add a bunch of BEFORE_POTENTIAL_GC/ AFTER_POTENTIAL_GC calls around calls to functions that can signal an error and thus invoke the debugger.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 04 Apr 2000 14:54:29 +0000
parents 09ce77df2610
children 4c808e415352
comparison
equal deleted inserted replaced
28496:92a9591b21a2 28497:334ebb7a551c
473 v1 = vectorp[op]; 473 v1 = vectorp[op];
474 if (SYMBOLP (v1)) 474 if (SYMBOLP (v1))
475 { 475 {
476 v2 = XSYMBOL (v1)->value; 476 v2 = XSYMBOL (v1)->value;
477 if (MISCP (v2) || EQ (v2, Qunbound)) 477 if (MISCP (v2) || EQ (v2, Qunbound))
478 v2 = Fsymbol_value (v1); 478 {
479 BEFORE_POTENTIAL_GC ();
480 v2 = Fsymbol_value (v1);
481 AFTER_POTENTIAL_GC ();
482 }
479 } 483 }
480 else 484 else
481 v2 = Fsymbol_value (v1); 485 {
486 BEFORE_POTENTIAL_GC ();
487 v2 = Fsymbol_value (v1);
488 AFTER_POTENTIAL_GC ();
489 }
482 PUSH (v2); 490 PUSH (v2);
483 break; 491 break;
484 } 492 }
485 493
486 case Bgotoifnil: 494 case Bgotoifnil:
520 } 528 }
521 529
522 case Bmemq: 530 case Bmemq:
523 { 531 {
524 Lisp_Object v1; 532 Lisp_Object v1;
533 BEFORE_POTENTIAL_GC ();
525 v1 = POP; 534 v1 = POP;
526 TOP = Fmemq (TOP, v1); 535 TOP = Fmemq (TOP, v1);
536 AFTER_POTENTIAL_GC ();
527 break; 537 break;
528 } 538 }
529 539
530 case Bcdr: 540 case Bcdr:
531 { 541 {
562 varset: 572 varset:
563 { 573 {
564 Lisp_Object sym, val; 574 Lisp_Object sym, val;
565 575
566 sym = vectorp[op]; 576 sym = vectorp[op];
567 val = POP; 577 val = TOP;
568 578
569 /* Inline the most common case. */ 579 /* Inline the most common case. */
570 if (SYMBOLP (sym) 580 if (SYMBOLP (sym)
571 && !EQ (val, Qunbound) 581 && !EQ (val, Qunbound)
572 && !MISCP (XSYMBOL (sym)->value) 582 && !MISCP (XSYMBOL (sym)->value)
579 && !(XSYMBOL (sym)->name->data[0] == ':' 589 && !(XSYMBOL (sym)->name->data[0] == ':'
580 && EQ (XSYMBOL (sym)->obarray, initial_obarray) 590 && EQ (XSYMBOL (sym)->obarray, initial_obarray)
581 && !EQ (val, sym))) 591 && !EQ (val, sym)))
582 XSYMBOL (sym)->value = val; 592 XSYMBOL (sym)->value = val;
583 else 593 else
584 set_internal (sym, val, current_buffer, 0); 594 {
585 } 595 BEFORE_POTENTIAL_GC ();
596 set_internal (sym, val, current_buffer, 0);
597 AFTER_POTENTIAL_GC ();
598 }
599 }
600 POP;
586 break; 601 break;
587 602
588 case Bdup: 603 case Bdup:
589 { 604 {
590 Lisp_Object v1; 605 Lisp_Object v1;
807 break; 822 break;
808 823
809 case Bcatch: 824 case Bcatch:
810 { 825 {
811 Lisp_Object v1; 826 Lisp_Object v1;
812 v1 = POP; 827 BEFORE_POTENTIAL_GC ();
813 BEFORE_POTENTIAL_GC (); 828 v1 = POP;
814 TOP = internal_catch (TOP, Feval, v1); 829 TOP = internal_catch (TOP, Feval, v1);
815 AFTER_POTENTIAL_GC (); 830 AFTER_POTENTIAL_GC ();
816 break; 831 break;
817 } 832 }
818 833
840 break; 855 break;
841 856
842 case Btemp_output_buffer_show: 857 case Btemp_output_buffer_show:
843 { 858 {
844 Lisp_Object v1; 859 Lisp_Object v1;
845 v1 = POP; 860 BEFORE_POTENTIAL_GC ();
846 BEFORE_POTENTIAL_GC (); 861 v1 = POP;
847 temp_output_buffer_show (TOP); 862 temp_output_buffer_show (TOP);
848 TOP = v1; 863 TOP = v1;
849 /* pop binding of standard-output */ 864 /* pop binding of standard-output */
850 unbind_to (specpdl_ptr - specpdl - 1, Qnil); 865 unbind_to (specpdl_ptr - specpdl - 1, Qnil);
851 AFTER_POTENTIAL_GC (); 866 AFTER_POTENTIAL_GC ();
853 } 868 }
854 869
855 case Bnth: 870 case Bnth:
856 { 871 {
857 Lisp_Object v1, v2; 872 Lisp_Object v1, v2;
873 BEFORE_POTENTIAL_GC ();
858 v1 = POP; 874 v1 = POP;
859 v2 = TOP; 875 v2 = TOP;
860 BEFORE_POTENTIAL_GC ();
861 CHECK_NUMBER (v2, 0); 876 CHECK_NUMBER (v2, 0);
862 AFTER_POTENTIAL_GC (); 877 AFTER_POTENTIAL_GC ();
863 op = XINT (v2); 878 op = XINT (v2);
864 immediate_quit = 1; 879 immediate_quit = 1;
865 while (--op >= 0) 880 while (--op >= 0)
945 DISCARD (op - 1); 960 DISCARD (op - 1);
946 TOP = Flist (op, &TOP); 961 TOP = Flist (op, &TOP);
947 break; 962 break;
948 963
949 case Blength: 964 case Blength:
965 BEFORE_POTENTIAL_GC ();
950 TOP = Flength (TOP); 966 TOP = Flength (TOP);
967 AFTER_POTENTIAL_GC ();
951 break; 968 break;
952 969
953 case Baref: 970 case Baref:
954 { 971 {
955 Lisp_Object v1; 972 Lisp_Object v1;
973 BEFORE_POTENTIAL_GC ();
956 v1 = POP; 974 v1 = POP;
957 TOP = Faref (TOP, v1); 975 TOP = Faref (TOP, v1);
976 AFTER_POTENTIAL_GC ();
958 break; 977 break;
959 } 978 }
960 979
961 case Baset: 980 case Baset:
962 { 981 {
963 Lisp_Object v1, v2; 982 Lisp_Object v1, v2;
983 BEFORE_POTENTIAL_GC ();
964 v2 = POP; v1 = POP; 984 v2 = POP; v1 = POP;
965 TOP = Faset (TOP, v1, v2); 985 TOP = Faset (TOP, v1, v2);
986 AFTER_POTENTIAL_GC ();
966 break; 987 break;
967 } 988 }
968 989
969 case Bsymbol_value: 990 case Bsymbol_value:
991 BEFORE_POTENTIAL_GC ();
970 TOP = Fsymbol_value (TOP); 992 TOP = Fsymbol_value (TOP);
993 AFTER_POTENTIAL_GC ();
971 break; 994 break;
972 995
973 case Bsymbol_function: 996 case Bsymbol_function:
997 BEFORE_POTENTIAL_GC ();
974 TOP = Fsymbol_function (TOP); 998 TOP = Fsymbol_function (TOP);
999 AFTER_POTENTIAL_GC ();
975 break; 1000 break;
976 1001
977 case Bset: 1002 case Bset:
978 { 1003 {
979 Lisp_Object v1; 1004 Lisp_Object v1;
1005 BEFORE_POTENTIAL_GC ();
980 v1 = POP; 1006 v1 = POP;
981 TOP = Fset (TOP, v1); 1007 TOP = Fset (TOP, v1);
1008 AFTER_POTENTIAL_GC ();
982 break; 1009 break;
983 } 1010 }
984 1011
985 case Bfset: 1012 case Bfset:
986 { 1013 {
987 Lisp_Object v1; 1014 Lisp_Object v1;
1015 BEFORE_POTENTIAL_GC ();
988 v1 = POP; 1016 v1 = POP;
989 TOP = Ffset (TOP, v1); 1017 TOP = Ffset (TOP, v1);
1018 AFTER_POTENTIAL_GC ();
990 break; 1019 break;
991 } 1020 }
992 1021
993 case Bget: 1022 case Bget:
994 { 1023 {
995 Lisp_Object v1; 1024 Lisp_Object v1;
1025 BEFORE_POTENTIAL_GC ();
996 v1 = POP; 1026 v1 = POP;
997 TOP = Fget (TOP, v1); 1027 TOP = Fget (TOP, v1);
1028 AFTER_POTENTIAL_GC ();
998 break; 1029 break;
999 } 1030 }
1000 1031
1001 case Bsubstring: 1032 case Bsubstring:
1002 { 1033 {
1003 Lisp_Object v1, v2; 1034 Lisp_Object v1, v2;
1035 BEFORE_POTENTIAL_GC ();
1004 v2 = POP; v1 = POP; 1036 v2 = POP; v1 = POP;
1005 BEFORE_POTENTIAL_GC ();
1006 TOP = Fsubstring (TOP, v1, v2); 1037 TOP = Fsubstring (TOP, v1, v2);
1007 AFTER_POTENTIAL_GC (); 1038 AFTER_POTENTIAL_GC ();
1008 break; 1039 break;
1009 } 1040 }
1010 1041
1011 case Bconcat2: 1042 case Bconcat2:
1043 BEFORE_POTENTIAL_GC ();
1012 DISCARD (1); 1044 DISCARD (1);
1013 TOP = Fconcat (2, &TOP); 1045 TOP = Fconcat (2, &TOP);
1046 AFTER_POTENTIAL_GC ();
1014 break; 1047 break;
1015 1048
1016 case Bconcat3: 1049 case Bconcat3:
1050 BEFORE_POTENTIAL_GC ();
1017 DISCARD (2); 1051 DISCARD (2);
1018 TOP = Fconcat (3, &TOP); 1052 TOP = Fconcat (3, &TOP);
1053 AFTER_POTENTIAL_GC ();
1019 break; 1054 break;
1020 1055
1021 case Bconcat4: 1056 case Bconcat4:
1057 BEFORE_POTENTIAL_GC ();
1022 DISCARD (3); 1058 DISCARD (3);
1023 TOP = Fconcat (4, &TOP); 1059 TOP = Fconcat (4, &TOP);
1060 AFTER_POTENTIAL_GC ();
1024 break; 1061 break;
1025 1062
1026 case BconcatN: 1063 case BconcatN:
1027 op = FETCH; 1064 op = FETCH;
1065 BEFORE_POTENTIAL_GC ();
1028 DISCARD (op - 1); 1066 DISCARD (op - 1);
1029 TOP = Fconcat (op, &TOP); 1067 TOP = Fconcat (op, &TOP);
1068 AFTER_POTENTIAL_GC ();
1030 break; 1069 break;
1031 1070
1032 case Bsub1: 1071 case Bsub1:
1033 { 1072 {
1034 Lisp_Object v1; 1073 Lisp_Object v1;
1051 { 1090 {
1052 XSETINT (v1, XINT (v1) + 1); 1091 XSETINT (v1, XINT (v1) + 1);
1053 TOP = v1; 1092 TOP = v1;
1054 } 1093 }
1055 else 1094 else
1056 TOP = Fadd1 (v1); 1095 {
1096 BEFORE_POTENTIAL_GC ();
1097 TOP = Fadd1 (v1);
1098 AFTER_POTENTIAL_GC ();
1099 }
1057 break; 1100 break;
1058 } 1101 }
1059 1102
1060 case Beqlsign: 1103 case Beqlsign:
1061 { 1104 {
1062 Lisp_Object v1, v2; 1105 Lisp_Object v1, v2;
1106 BEFORE_POTENTIAL_GC ();
1063 v2 = POP; v1 = TOP; 1107 v2 = POP; v1 = TOP;
1064 BEFORE_POTENTIAL_GC ();
1065 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1, 0); 1108 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1, 0);
1066 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2, 0); 1109 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2, 0);
1067 AFTER_POTENTIAL_GC (); 1110 AFTER_POTENTIAL_GC ();
1068 if (FLOATP (v1) || FLOATP (v2)) 1111 if (FLOATP (v1) || FLOATP (v2))
1069 { 1112 {
1079 } 1122 }
1080 1123
1081 case Bgtr: 1124 case Bgtr:
1082 { 1125 {
1083 Lisp_Object v1; 1126 Lisp_Object v1;
1127 BEFORE_POTENTIAL_GC ();
1084 v1 = POP; 1128 v1 = POP;
1085 TOP = Fgtr (TOP, v1); 1129 TOP = Fgtr (TOP, v1);
1130 AFTER_POTENTIAL_GC ();
1086 break; 1131 break;
1087 } 1132 }
1088 1133
1089 case Blss: 1134 case Blss:
1090 { 1135 {
1091 Lisp_Object v1; 1136 Lisp_Object v1;
1137 BEFORE_POTENTIAL_GC ();
1092 v1 = POP; 1138 v1 = POP;
1093 TOP = Flss (TOP, v1); 1139 TOP = Flss (TOP, v1);
1140 AFTER_POTENTIAL_GC ();
1094 break; 1141 break;
1095 } 1142 }
1096 1143
1097 case Bleq: 1144 case Bleq:
1098 { 1145 {
1099 Lisp_Object v1; 1146 Lisp_Object v1;
1147 BEFORE_POTENTIAL_GC ();
1100 v1 = POP; 1148 v1 = POP;
1101 TOP = Fleq (TOP, v1); 1149 TOP = Fleq (TOP, v1);
1150 AFTER_POTENTIAL_GC ();
1102 break; 1151 break;
1103 } 1152 }
1104 1153
1105 case Bgeq: 1154 case Bgeq:
1106 { 1155 {
1109 TOP = Fgeq (TOP, v1); 1158 TOP = Fgeq (TOP, v1);
1110 break; 1159 break;
1111 } 1160 }
1112 1161
1113 case Bdiff: 1162 case Bdiff:
1163 BEFORE_POTENTIAL_GC ();
1114 DISCARD (1); 1164 DISCARD (1);
1115 TOP = Fminus (2, &TOP); 1165 TOP = Fminus (2, &TOP);
1166 AFTER_POTENTIAL_GC ();
1116 break; 1167 break;
1117 1168
1118 case Bnegate: 1169 case Bnegate:
1119 { 1170 {
1120 Lisp_Object v1; 1171 Lisp_Object v1;
1123 { 1174 {
1124 XSETINT (v1, - XINT (v1)); 1175 XSETINT (v1, - XINT (v1));
1125 TOP = v1; 1176 TOP = v1;
1126 } 1177 }
1127 else 1178 else
1128 TOP = Fminus (1, &TOP); 1179 {
1180 BEFORE_POTENTIAL_GC ();
1181 TOP = Fminus (1, &TOP);
1182 AFTER_POTENTIAL_GC ();
1183 }
1129 break; 1184 break;
1130 } 1185 }
1131 1186
1132 case Bplus: 1187 case Bplus:
1188 BEFORE_POTENTIAL_GC ();
1133 DISCARD (1); 1189 DISCARD (1);
1134 TOP = Fplus (2, &TOP); 1190 TOP = Fplus (2, &TOP);
1191 AFTER_POTENTIAL_GC ();
1135 break; 1192 break;
1136 1193
1137 case Bmax: 1194 case Bmax:
1195 BEFORE_POTENTIAL_GC ();
1138 DISCARD (1); 1196 DISCARD (1);
1139 TOP = Fmax (2, &TOP); 1197 TOP = Fmax (2, &TOP);
1198 AFTER_POTENTIAL_GC ();
1140 break; 1199 break;
1141 1200
1142 case Bmin: 1201 case Bmin:
1202 BEFORE_POTENTIAL_GC ();
1143 DISCARD (1); 1203 DISCARD (1);
1144 TOP = Fmin (2, &TOP); 1204 TOP = Fmin (2, &TOP);
1205 AFTER_POTENTIAL_GC ();
1145 break; 1206 break;
1146 1207
1147 case Bmult: 1208 case Bmult:
1209 BEFORE_POTENTIAL_GC ();
1148 DISCARD (1); 1210 DISCARD (1);
1149 TOP = Ftimes (2, &TOP); 1211 TOP = Ftimes (2, &TOP);
1212 AFTER_POTENTIAL_GC ();
1150 break; 1213 break;
1151 1214
1152 case Bquo: 1215 case Bquo:
1216 BEFORE_POTENTIAL_GC ();
1153 DISCARD (1); 1217 DISCARD (1);
1154 TOP = Fquo (2, &TOP); 1218 TOP = Fquo (2, &TOP);
1219 AFTER_POTENTIAL_GC ();
1155 break; 1220 break;
1156 1221
1157 case Brem: 1222 case Brem:
1158 { 1223 {
1159 Lisp_Object v1; 1224 Lisp_Object v1;
1225 BEFORE_POTENTIAL_GC ();
1160 v1 = POP; 1226 v1 = POP;
1161 TOP = Frem (TOP, v1); 1227 TOP = Frem (TOP, v1);
1228 AFTER_POTENTIAL_GC ();
1162 break; 1229 break;
1163 } 1230 }
1164 1231
1165 case Bpoint: 1232 case Bpoint:
1166 { 1233 {
1205 PUSH (v1); 1272 PUSH (v1);
1206 break; 1273 break;
1207 } 1274 }
1208 1275
1209 case Bchar_after: 1276 case Bchar_after:
1277 BEFORE_POTENTIAL_GC ();
1210 TOP = Fchar_after (TOP); 1278 TOP = Fchar_after (TOP);
1279 AFTER_POTENTIAL_GC ();
1211 break; 1280 break;
1212 1281
1213 case Bfollowing_char: 1282 case Bfollowing_char:
1214 { 1283 {
1215 Lisp_Object v1; 1284 Lisp_Object v1;
1285 BEFORE_POTENTIAL_GC ();
1216 v1 = Ffollowing_char (); 1286 v1 = Ffollowing_char ();
1287 AFTER_POTENTIAL_GC ();
1217 PUSH (v1); 1288 PUSH (v1);
1218 break; 1289 break;
1219 } 1290 }
1220 1291
1221 case Bpreceding_char: 1292 case Bpreceding_char:
1222 { 1293 {
1223 Lisp_Object v1; 1294 Lisp_Object v1;
1295 BEFORE_POTENTIAL_GC ();
1224 v1 = Fprevious_char (); 1296 v1 = Fprevious_char ();
1297 AFTER_POTENTIAL_GC ();
1225 PUSH (v1); 1298 PUSH (v1);
1226 break; 1299 break;
1227 } 1300 }
1228 1301
1229 case Bcurrent_column: 1302 case Bcurrent_column:
1283 break; 1356 break;
1284 1357
1285 case Bskip_chars_forward: 1358 case Bskip_chars_forward:
1286 { 1359 {
1287 Lisp_Object v1; 1360 Lisp_Object v1;
1288 v1 = POP; 1361 BEFORE_POTENTIAL_GC ();
1289 BEFORE_POTENTIAL_GC (); 1362 v1 = POP;
1290 TOP = Fskip_chars_forward (TOP, v1); 1363 TOP = Fskip_chars_forward (TOP, v1);
1291 AFTER_POTENTIAL_GC (); 1364 AFTER_POTENTIAL_GC ();
1292 break; 1365 break;
1293 } 1366 }
1294 1367
1295 case Bskip_chars_backward: 1368 case Bskip_chars_backward:
1296 { 1369 {
1297 Lisp_Object v1; 1370 Lisp_Object v1;
1298 v1 = POP; 1371 BEFORE_POTENTIAL_GC ();
1299 BEFORE_POTENTIAL_GC (); 1372 v1 = POP;
1300 TOP = Fskip_chars_backward (TOP, v1); 1373 TOP = Fskip_chars_backward (TOP, v1);
1301 AFTER_POTENTIAL_GC (); 1374 AFTER_POTENTIAL_GC ();
1302 break; 1375 break;
1303 } 1376 }
1304 1377
1316 break; 1389 break;
1317 1390
1318 case Bbuffer_substring: 1391 case Bbuffer_substring:
1319 { 1392 {
1320 Lisp_Object v1; 1393 Lisp_Object v1;
1321 v1 = POP; 1394 BEFORE_POTENTIAL_GC ();
1322 BEFORE_POTENTIAL_GC (); 1395 v1 = POP;
1323 TOP = Fbuffer_substring (TOP, v1); 1396 TOP = Fbuffer_substring (TOP, v1);
1324 AFTER_POTENTIAL_GC (); 1397 AFTER_POTENTIAL_GC ();
1325 break; 1398 break;
1326 } 1399 }
1327 1400
1328 case Bdelete_region: 1401 case Bdelete_region:
1329 { 1402 {
1330 Lisp_Object v1; 1403 Lisp_Object v1;
1331 v1 = POP; 1404 BEFORE_POTENTIAL_GC ();
1332 BEFORE_POTENTIAL_GC (); 1405 v1 = POP;
1333 TOP = Fdelete_region (TOP, v1); 1406 TOP = Fdelete_region (TOP, v1);
1334 AFTER_POTENTIAL_GC (); 1407 AFTER_POTENTIAL_GC ();
1335 break; 1408 break;
1336 } 1409 }
1337 1410
1338 case Bnarrow_to_region: 1411 case Bnarrow_to_region:
1339 { 1412 {
1340 Lisp_Object v1; 1413 Lisp_Object v1;
1341 v1 = POP; 1414 BEFORE_POTENTIAL_GC ();
1342 BEFORE_POTENTIAL_GC (); 1415 v1 = POP;
1343 TOP = Fnarrow_to_region (TOP, v1); 1416 TOP = Fnarrow_to_region (TOP, v1);
1344 AFTER_POTENTIAL_GC (); 1417 AFTER_POTENTIAL_GC ();
1345 break; 1418 break;
1346 } 1419 }
1347 1420
1358 break; 1431 break;
1359 1432
1360 case Bset_marker: 1433 case Bset_marker:
1361 { 1434 {
1362 Lisp_Object v1, v2; 1435 Lisp_Object v1, v2;
1436 BEFORE_POTENTIAL_GC ();
1363 v1 = POP; 1437 v1 = POP;
1364 v2 = POP; 1438 v2 = POP;
1365 TOP = Fset_marker (TOP, v2, v1); 1439 TOP = Fset_marker (TOP, v2, v1);
1440 AFTER_POTENTIAL_GC ();
1366 break; 1441 break;
1367 } 1442 }
1368 1443
1369 case Bmatch_beginning: 1444 case Bmatch_beginning:
1445 BEFORE_POTENTIAL_GC ();
1370 TOP = Fmatch_beginning (TOP); 1446 TOP = Fmatch_beginning (TOP);
1447 AFTER_POTENTIAL_GC ();
1371 break; 1448 break;
1372 1449
1373 case Bmatch_end: 1450 case Bmatch_end:
1451 BEFORE_POTENTIAL_GC ();
1374 TOP = Fmatch_end (TOP); 1452 TOP = Fmatch_end (TOP);
1453 AFTER_POTENTIAL_GC ();
1375 break; 1454 break;
1376 1455
1377 case Bupcase: 1456 case Bupcase:
1457 BEFORE_POTENTIAL_GC ();
1378 TOP = Fupcase (TOP); 1458 TOP = Fupcase (TOP);
1459 AFTER_POTENTIAL_GC ();
1379 break; 1460 break;
1380 1461
1381 case Bdowncase: 1462 case Bdowncase:
1463 BEFORE_POTENTIAL_GC ();
1382 TOP = Fdowncase (TOP); 1464 TOP = Fdowncase (TOP);
1465 AFTER_POTENTIAL_GC ();
1383 break; 1466 break;
1384 1467
1385 case Bstringeqlsign: 1468 case Bstringeqlsign:
1386 { 1469 {
1387 Lisp_Object v1; 1470 Lisp_Object v1;
1471 BEFORE_POTENTIAL_GC ();
1388 v1 = POP; 1472 v1 = POP;
1389 TOP = Fstring_equal (TOP, v1); 1473 TOP = Fstring_equal (TOP, v1);
1474 AFTER_POTENTIAL_GC ();
1390 break; 1475 break;
1391 } 1476 }
1392 1477
1393 case Bstringlss: 1478 case Bstringlss:
1394 { 1479 {
1395 Lisp_Object v1; 1480 Lisp_Object v1;
1481 BEFORE_POTENTIAL_GC ();
1396 v1 = POP; 1482 v1 = POP;
1397 TOP = Fstring_lessp (TOP, v1); 1483 TOP = Fstring_lessp (TOP, v1);
1484 AFTER_POTENTIAL_GC ();
1398 break; 1485 break;
1399 } 1486 }
1400 1487
1401 case Bequal: 1488 case Bequal:
1402 { 1489 {
1407 } 1494 }
1408 1495
1409 case Bnthcdr: 1496 case Bnthcdr:
1410 { 1497 {
1411 Lisp_Object v1; 1498 Lisp_Object v1;
1499 BEFORE_POTENTIAL_GC ();
1412 v1 = POP; 1500 v1 = POP;
1413 TOP = Fnthcdr (TOP, v1); 1501 TOP = Fnthcdr (TOP, v1);
1502 AFTER_POTENTIAL_GC ();
1414 break; 1503 break;
1415 } 1504 }
1416 1505
1417 case Belt: 1506 case Belt:
1418 { 1507 {
1419 Lisp_Object v1, v2; 1508 Lisp_Object v1, v2;
1420 if (CONSP (TOP)) 1509 if (CONSP (TOP))
1421 { 1510 {
1422 /* Exchange args and then do nth. */ 1511 /* Exchange args and then do nth. */
1512 BEFORE_POTENTIAL_GC ();
1423 v2 = POP; 1513 v2 = POP;
1424 v1 = TOP; 1514 v1 = TOP;
1425 BEFORE_POTENTIAL_GC ();
1426 CHECK_NUMBER (v2, 0); 1515 CHECK_NUMBER (v2, 0);
1427 AFTER_POTENTIAL_GC (); 1516 AFTER_POTENTIAL_GC ();
1428 op = XINT (v2); 1517 op = XINT (v2);
1429 immediate_quit = 1; 1518 immediate_quit = 1;
1430 while (--op >= 0) 1519 while (--op >= 0)
1453 AFTER_POTENTIAL_GC (); 1542 AFTER_POTENTIAL_GC ();
1454 } 1543 }
1455 } 1544 }
1456 else 1545 else
1457 { 1546 {
1547 BEFORE_POTENTIAL_GC ();
1458 v1 = POP; 1548 v1 = POP;
1459 TOP = Felt (TOP, v1); 1549 TOP = Felt (TOP, v1);
1550 AFTER_POTENTIAL_GC ();
1460 } 1551 }
1461 break; 1552 break;
1462 } 1553 }
1463 1554
1464 case Bmember: 1555 case Bmember:
1465 { 1556 {
1466 Lisp_Object v1; 1557 Lisp_Object v1;
1558 BEFORE_POTENTIAL_GC ();
1467 v1 = POP; 1559 v1 = POP;
1468 TOP = Fmember (TOP, v1); 1560 TOP = Fmember (TOP, v1);
1561 AFTER_POTENTIAL_GC ();
1469 break; 1562 break;
1470 } 1563 }
1471 1564
1472 case Bassq: 1565 case Bassq:
1473 { 1566 {
1474 Lisp_Object v1; 1567 Lisp_Object v1;
1568 BEFORE_POTENTIAL_GC ();
1475 v1 = POP; 1569 v1 = POP;
1476 TOP = Fassq (TOP, v1); 1570 TOP = Fassq (TOP, v1);
1571 AFTER_POTENTIAL_GC ();
1477 break; 1572 break;
1478 } 1573 }
1479 1574
1480 case Bnreverse: 1575 case Bnreverse:
1576 BEFORE_POTENTIAL_GC ();
1481 TOP = Fnreverse (TOP); 1577 TOP = Fnreverse (TOP);
1578 AFTER_POTENTIAL_GC ();
1482 break; 1579 break;
1483 1580
1484 case Bsetcar: 1581 case Bsetcar:
1485 { 1582 {
1486 Lisp_Object v1; 1583 Lisp_Object v1;
1584 BEFORE_POTENTIAL_GC ();
1487 v1 = POP; 1585 v1 = POP;
1488 TOP = Fsetcar (TOP, v1); 1586 TOP = Fsetcar (TOP, v1);
1587 AFTER_POTENTIAL_GC ();
1489 break; 1588 break;
1490 } 1589 }
1491 1590
1492 case Bsetcdr: 1591 case Bsetcdr:
1493 { 1592 {
1494 Lisp_Object v1; 1593 Lisp_Object v1;
1594 BEFORE_POTENTIAL_GC ();
1495 v1 = POP; 1595 v1 = POP;
1496 TOP = Fsetcdr (TOP, v1); 1596 TOP = Fsetcdr (TOP, v1);
1597 AFTER_POTENTIAL_GC ();
1497 break; 1598 break;
1498 } 1599 }
1499 1600
1500 case Bcar_safe: 1601 case Bcar_safe:
1501 { 1602 {
1518 TOP = Qnil; 1619 TOP = Qnil;
1519 break; 1620 break;
1520 } 1621 }
1521 1622
1522 case Bnconc: 1623 case Bnconc:
1624 BEFORE_POTENTIAL_GC ();
1523 DISCARD (1); 1625 DISCARD (1);
1524 TOP = Fnconc (2, &TOP); 1626 TOP = Fnconc (2, &TOP);
1627 AFTER_POTENTIAL_GC ();
1525 break; 1628 break;
1526 1629
1527 case Bnumberp: 1630 case Bnumberp:
1528 TOP = (NUMBERP (TOP) ? Qt : Qnil); 1631 TOP = (NUMBERP (TOP) ? Qt : Qnil);
1529 break; 1632 break;