aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorPaul Eggert2016-07-15 22:15:42 +0200
committerPaul Eggert2016-07-15 22:31:40 +0200
commit4ba72d329525332798b3b222eaec0efc8a23ac75 (patch)
treed4f32fea06f8111c8c04c7254e346cde2e6b20df /src/bytecode.c
parent1873ef3b8986193803cee2721ee738f8dee39514 (diff)
downloademacs-4ba72d329525332798b3b222eaec0efc8a23ac75.tar.gz
emacs-4ba72d329525332798b3b222eaec0efc8a23ac75.zip
Remove BYTE_MAINTAIN_TOP
It is no longer needed now that we assume GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. * src/bytecode.c (BYTE_MAINTAIN_TOP): Remove. All uses removed, and code simplified accordingly. (BEFORE_POTENTIAL_GC, AFTER_POTENTIAL_GC): Remove, since they are always no-ops now. All uses removed. (MAYBE_GC): Remove. All uses replaced by maybe_gc, since it is now equivalent.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c220
1 files changed, 10 insertions, 210 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 75d51cc3e84..a551eca2447 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -278,9 +278,6 @@ enum byte_code_op
278 Bset_mark = 0163, /* this loser is no longer generated as of v18 */ 278 Bset_mark = 0163, /* this loser is no longer generated as of v18 */
279#endif 279#endif
280}; 280};
281
282/* Whether to maintain a `top' and `bottom' field in the stack frame. */
283#define BYTE_MAINTAIN_TOP BYTE_CODE_SAFE
284 281
285/* Structure describing a value stack used during byte-code execution 282/* Structure describing a value stack used during byte-code execution
286 in Fbyte_code. */ 283 in Fbyte_code. */
@@ -291,12 +288,6 @@ struct byte_stack
291 and is relocated when that string is relocated. */ 288 and is relocated when that string is relocated. */
292 const unsigned char *pc; 289 const unsigned char *pc;
293 290
294 /* Top and bottom of stack. The bottom points to an area of memory
295 allocated with alloca in Fbyte_code. */
296#if BYTE_MAINTAIN_TOP
297 Lisp_Object *top, *bottom;
298#endif
299
300 /* The string containing the byte-code, and its current address. 291 /* The string containing the byte-code, and its current address.
301 Storing this here protects it from GC. */ 292 Storing this here protects it from GC. */
302 Lisp_Object byte_string; 293 Lisp_Object byte_string;
@@ -367,27 +358,6 @@ relocate_byte_stack (void)
367 358
368#define TOP (*top) 359#define TOP (*top)
369 360
370/* Actions that must be performed before and after calling a function
371 that might GC. */
372
373#if !BYTE_MAINTAIN_TOP
374#define BEFORE_POTENTIAL_GC() ((void)0)
375#define AFTER_POTENTIAL_GC() ((void)0)
376#else
377#define BEFORE_POTENTIAL_GC() stack.top = top
378#define AFTER_POTENTIAL_GC() stack.top = NULL
379#endif
380
381/* Garbage collect if we have consed enough since the last time.
382 We do this at every branch, to avoid loops that never GC. */
383
384#define MAYBE_GC() \
385 do { \
386 BEFORE_POTENTIAL_GC (); \
387 maybe_gc (); \
388 AFTER_POTENTIAL_GC (); \
389 } while (0)
390
391/* Check for jumping out of range. */ 361/* Check for jumping out of range. */
392 362
393#ifdef BYTE_CODE_SAFE 363#ifdef BYTE_CODE_SAFE
@@ -410,11 +380,9 @@ relocate_byte_stack (void)
410 { \ 380 { \
411 Lisp_Object flag = Vquit_flag; \ 381 Lisp_Object flag = Vquit_flag; \
412 Vquit_flag = Qnil; \ 382 Vquit_flag = Qnil; \
413 BEFORE_POTENTIAL_GC (); \
414 if (EQ (Vthrow_on_input, flag)) \ 383 if (EQ (Vthrow_on_input, flag)) \
415 Fthrow (Vthrow_on_input, Qt); \ 384 Fthrow (Vthrow_on_input, Qt); \
416 Fsignal (Qquit, Qnil); \ 385 Fsignal (Qquit, Qnil); \
417 AFTER_POTENTIAL_GC (); \
418 } \ 386 } \
419 else if (pending_signals) \ 387 else if (pending_signals) \
420 process_pending_signals (); \ 388 process_pending_signals (); \
@@ -504,10 +472,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
504 if (MAX_ALLOCA / word_size <= XFASTINT (maxdepth)) 472 if (MAX_ALLOCA / word_size <= XFASTINT (maxdepth))
505 memory_full (SIZE_MAX); 473 memory_full (SIZE_MAX);
506 top = alloca ((XFASTINT (maxdepth) + 1) * sizeof *top); 474 top = alloca ((XFASTINT (maxdepth) + 1) * sizeof *top);
507#if BYTE_MAINTAIN_TOP
508 stack.bottom = top + 1;
509 stack.top = NULL;
510#endif
511 stack.next = byte_stack_list; 475 stack.next = byte_stack_list;
512 byte_stack_list = &stack; 476 byte_stack_list = &stack;
513 477
@@ -676,16 +640,12 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
676 || (v2 = SYMBOL_VAL (XSYMBOL (v1)), 640 || (v2 = SYMBOL_VAL (XSYMBOL (v1)),
677 EQ (v2, Qunbound))) 641 EQ (v2, Qunbound)))
678 { 642 {
679 BEFORE_POTENTIAL_GC ();
680 v2 = Fsymbol_value (v1); 643 v2 = Fsymbol_value (v1);
681 AFTER_POTENTIAL_GC ();
682 } 644 }
683 } 645 }
684 else 646 else
685 { 647 {
686 BEFORE_POTENTIAL_GC ();
687 v2 = Fsymbol_value (v1); 648 v2 = Fsymbol_value (v1);
688 AFTER_POTENTIAL_GC ();
689 } 649 }
690 PUSH (v2); 650 PUSH (v2);
691 NEXT; 651 NEXT;
@@ -694,7 +654,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
694 CASE (Bgotoifnil): 654 CASE (Bgotoifnil):
695 { 655 {
696 Lisp_Object v1; 656 Lisp_Object v1;
697 MAYBE_GC (); 657 maybe_gc ();
698 op = FETCH2; 658 op = FETCH2;
699 v1 = POP; 659 v1 = POP;
700 if (NILP (v1)) 660 if (NILP (v1))
@@ -716,7 +676,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
716 TOP = Qnil; 676 TOP = Qnil;
717 else 677 else
718 { 678 {
719 BEFORE_POTENTIAL_GC ();
720 wrong_type_argument (Qlistp, v1); 679 wrong_type_argument (Qlistp, v1);
721 } 680 }
722 NEXT; 681 NEXT;
@@ -733,10 +692,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
733 CASE (Bmemq): 692 CASE (Bmemq):
734 { 693 {
735 Lisp_Object v1; 694 Lisp_Object v1;
736 BEFORE_POTENTIAL_GC ();
737 v1 = POP; 695 v1 = POP;
738 TOP = Fmemq (TOP, v1); 696 TOP = Fmemq (TOP, v1);
739 AFTER_POTENTIAL_GC ();
740 NEXT; 697 NEXT;
741 } 698 }
742 699
@@ -750,7 +707,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
750 TOP = Qnil; 707 TOP = Qnil;
751 else 708 else
752 { 709 {
753 BEFORE_POTENTIAL_GC ();
754 wrong_type_argument (Qlistp, v1); 710 wrong_type_argument (Qlistp, v1);
755 } 711 }
756 NEXT; 712 NEXT;
@@ -786,9 +742,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
786 SET_SYMBOL_VAL (XSYMBOL (sym), val); 742 SET_SYMBOL_VAL (XSYMBOL (sym), val);
787 else 743 else
788 { 744 {
789 BEFORE_POTENTIAL_GC ();
790 set_internal (sym, val, Qnil, 0); 745 set_internal (sym, val, Qnil, 0);
791 AFTER_POTENTIAL_GC ();
792 } 746 }
793 } 747 }
794 (void) POP; 748 (void) POP;
@@ -821,9 +775,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
821 op -= Bvarbind; 775 op -= Bvarbind;
822 varbind: 776 varbind:
823 /* Specbind can signal and thus GC. */ 777 /* Specbind can signal and thus GC. */
824 BEFORE_POTENTIAL_GC ();
825 specbind (vectorp[op], POP); 778 specbind (vectorp[op], POP);
826 AFTER_POTENTIAL_GC ();
827 NEXT; 779 NEXT;
828 780
829 CASE (Bcall6): 781 CASE (Bcall6):
@@ -843,7 +795,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
843 op -= Bcall; 795 op -= Bcall;
844 docall: 796 docall:
845 { 797 {
846 BEFORE_POTENTIAL_GC ();
847 DISCARD (op); 798 DISCARD (op);
848#ifdef BYTE_CODE_METER 799#ifdef BYTE_CODE_METER
849 if (byte_metering_on && SYMBOLP (TOP)) 800 if (byte_metering_on && SYMBOLP (TOP))
@@ -861,7 +812,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
861 } 812 }
862#endif 813#endif
863 TOP = Ffuncall (op + 1, &TOP); 814 TOP = Ffuncall (op + 1, &TOP);
864 AFTER_POTENTIAL_GC ();
865 NEXT; 815 NEXT;
866 } 816 }
867 817
@@ -881,21 +831,17 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
881 CASE (Bunbind5): 831 CASE (Bunbind5):
882 op -= Bunbind; 832 op -= Bunbind;
883 dounbind: 833 dounbind:
884 BEFORE_POTENTIAL_GC ();
885 unbind_to (SPECPDL_INDEX () - op, Qnil); 834 unbind_to (SPECPDL_INDEX () - op, Qnil);
886 AFTER_POTENTIAL_GC ();
887 NEXT; 835 NEXT;
888 836
889 CASE (Bunbind_all): /* Obsolete. Never used. */ 837 CASE (Bunbind_all): /* Obsolete. Never used. */
890 /* To unbind back to the beginning of this frame. Not used yet, 838 /* To unbind back to the beginning of this frame. Not used yet,
891 but will be needed for tail-recursion elimination. */ 839 but will be needed for tail-recursion elimination. */
892 BEFORE_POTENTIAL_GC ();
893 unbind_to (count, Qnil); 840 unbind_to (count, Qnil);
894 AFTER_POTENTIAL_GC ();
895 NEXT; 841 NEXT;
896 842
897 CASE (Bgoto): 843 CASE (Bgoto):
898 MAYBE_GC (); 844 maybe_gc ();
899 BYTE_CODE_QUIT; 845 BYTE_CODE_QUIT;
900 op = FETCH2; /* pc = FETCH2 loses since FETCH2 contains pc++ */ 846 op = FETCH2; /* pc = FETCH2 loses since FETCH2 contains pc++ */
901 CHECK_RANGE (op); 847 CHECK_RANGE (op);
@@ -905,7 +851,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
905 CASE (Bgotoifnonnil): 851 CASE (Bgotoifnonnil):
906 { 852 {
907 Lisp_Object v1; 853 Lisp_Object v1;
908 MAYBE_GC (); 854 maybe_gc ();
909 op = FETCH2; 855 op = FETCH2;
910 v1 = POP; 856 v1 = POP;
911 if (!NILP (v1)) 857 if (!NILP (v1))
@@ -918,7 +864,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
918 } 864 }
919 865
920 CASE (Bgotoifnilelsepop): 866 CASE (Bgotoifnilelsepop):
921 MAYBE_GC (); 867 maybe_gc ();
922 op = FETCH2; 868 op = FETCH2;
923 if (NILP (TOP)) 869 if (NILP (TOP))
924 { 870 {
@@ -930,7 +876,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
930 NEXT; 876 NEXT;
931 877
932 CASE (Bgotoifnonnilelsepop): 878 CASE (Bgotoifnonnilelsepop):
933 MAYBE_GC (); 879 maybe_gc ();
934 op = FETCH2; 880 op = FETCH2;
935 if (!NILP (TOP)) 881 if (!NILP (TOP))
936 { 882 {
@@ -942,7 +888,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
942 NEXT; 888 NEXT;
943 889
944 CASE (BRgoto): 890 CASE (BRgoto):
945 MAYBE_GC (); 891 maybe_gc ();
946 BYTE_CODE_QUIT; 892 BYTE_CODE_QUIT;
947 stack.pc += (int) *stack.pc - 127; 893 stack.pc += (int) *stack.pc - 127;
948 NEXT; 894 NEXT;
@@ -950,7 +896,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
950 CASE (BRgotoifnil): 896 CASE (BRgotoifnil):
951 { 897 {
952 Lisp_Object v1; 898 Lisp_Object v1;
953 MAYBE_GC (); 899 maybe_gc ();
954 v1 = POP; 900 v1 = POP;
955 if (NILP (v1)) 901 if (NILP (v1))
956 { 902 {
@@ -964,7 +910,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
964 CASE (BRgotoifnonnil): 910 CASE (BRgotoifnonnil):
965 { 911 {
966 Lisp_Object v1; 912 Lisp_Object v1;
967 MAYBE_GC (); 913 maybe_gc ();
968 v1 = POP; 914 v1 = POP;
969 if (!NILP (v1)) 915 if (!NILP (v1))
970 { 916 {
@@ -976,7 +922,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
976 } 922 }
977 923
978 CASE (BRgotoifnilelsepop): 924 CASE (BRgotoifnilelsepop):
979 MAYBE_GC (); 925 maybe_gc ();
980 op = *stack.pc++; 926 op = *stack.pc++;
981 if (NILP (TOP)) 927 if (NILP (TOP))
982 { 928 {
@@ -987,7 +933,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
987 NEXT; 933 NEXT;
988 934
989 CASE (BRgotoifnonnilelsepop): 935 CASE (BRgotoifnonnilelsepop):
990 MAYBE_GC (); 936 maybe_gc ();
991 op = *stack.pc++; 937 op = *stack.pc++;
992 if (!NILP (TOP)) 938 if (!NILP (TOP))
993 { 939 {
@@ -1024,10 +970,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1024 ptrdiff_t count1 = SPECPDL_INDEX (); 970 ptrdiff_t count1 = SPECPDL_INDEX ();
1025 record_unwind_protect (restore_window_configuration, 971 record_unwind_protect (restore_window_configuration,
1026 Fcurrent_window_configuration (Qnil)); 972 Fcurrent_window_configuration (Qnil));
1027 BEFORE_POTENTIAL_GC ();
1028 TOP = Fprogn (TOP); 973 TOP = Fprogn (TOP);
1029 unbind_to (count1, TOP); 974 unbind_to (count1, TOP);
1030 AFTER_POTENTIAL_GC ();
1031 NEXT; 975 NEXT;
1032 } 976 }
1033 977
@@ -1039,10 +983,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1039 CASE (Bcatch): /* Obsolete since 24.4. */ 983 CASE (Bcatch): /* Obsolete since 24.4. */
1040 { 984 {
1041 Lisp_Object v1; 985 Lisp_Object v1;
1042 BEFORE_POTENTIAL_GC ();
1043 v1 = POP; 986 v1 = POP;
1044 TOP = internal_catch (TOP, eval_sub, v1); 987 TOP = internal_catch (TOP, eval_sub, v1);
1045 AFTER_POTENTIAL_GC ();
1046 NEXT; 988 NEXT;
1047 } 989 }
1048 990
@@ -1098,30 +1040,24 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1098 Lisp_Object handlers, body; 1040 Lisp_Object handlers, body;
1099 handlers = POP; 1041 handlers = POP;
1100 body = POP; 1042 body = POP;
1101 BEFORE_POTENTIAL_GC ();
1102 TOP = internal_lisp_condition_case (TOP, body, handlers); 1043 TOP = internal_lisp_condition_case (TOP, body, handlers);
1103 AFTER_POTENTIAL_GC ();
1104 NEXT; 1044 NEXT;
1105 } 1045 }
1106 1046
1107 CASE (Btemp_output_buffer_setup): /* Obsolete since 24.1. */ 1047 CASE (Btemp_output_buffer_setup): /* Obsolete since 24.1. */
1108 BEFORE_POTENTIAL_GC ();
1109 CHECK_STRING (TOP); 1048 CHECK_STRING (TOP);
1110 temp_output_buffer_setup (SSDATA (TOP)); 1049 temp_output_buffer_setup (SSDATA (TOP));
1111 AFTER_POTENTIAL_GC ();
1112 TOP = Vstandard_output; 1050 TOP = Vstandard_output;
1113 NEXT; 1051 NEXT;
1114 1052
1115 CASE (Btemp_output_buffer_show): /* Obsolete since 24.1. */ 1053 CASE (Btemp_output_buffer_show): /* Obsolete since 24.1. */
1116 { 1054 {
1117 Lisp_Object v1; 1055 Lisp_Object v1;
1118 BEFORE_POTENTIAL_GC ();
1119 v1 = POP; 1056 v1 = POP;
1120 temp_output_buffer_show (TOP); 1057 temp_output_buffer_show (TOP);
1121 TOP = v1; 1058 TOP = v1;
1122 /* pop binding of standard-output */ 1059 /* pop binding of standard-output */
1123 unbind_to (SPECPDL_INDEX () - 1, Qnil); 1060 unbind_to (SPECPDL_INDEX () - 1, Qnil);
1124 AFTER_POTENTIAL_GC ();
1125 NEXT; 1061 NEXT;
1126 } 1062 }
1127 1063
@@ -1129,7 +1065,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1129 { 1065 {
1130 Lisp_Object v1, v2; 1066 Lisp_Object v1, v2;
1131 EMACS_INT n; 1067 EMACS_INT n;
1132 BEFORE_POTENTIAL_GC ();
1133 v1 = POP; 1068 v1 = POP;
1134 v2 = TOP; 1069 v2 = TOP;
1135 CHECK_NUMBER (v2); 1070 CHECK_NUMBER (v2);
@@ -1139,7 +1074,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1139 v1 = XCDR (v1); 1074 v1 = XCDR (v1);
1140 immediate_quit = 0; 1075 immediate_quit = 0;
1141 TOP = CAR (v1); 1076 TOP = CAR (v1);
1142 AFTER_POTENTIAL_GC ();
1143 NEXT; 1077 NEXT;
1144 } 1078 }
1145 1079
@@ -1200,110 +1134,84 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1200 NEXT; 1134 NEXT;
1201 1135
1202 CASE (Blength): 1136 CASE (Blength):
1203 BEFORE_POTENTIAL_GC ();
1204 TOP = Flength (TOP); 1137 TOP = Flength (TOP);
1205 AFTER_POTENTIAL_GC ();
1206 NEXT; 1138 NEXT;
1207 1139
1208 CASE (Baref): 1140 CASE (Baref):
1209 { 1141 {
1210 Lisp_Object v1; 1142 Lisp_Object v1;
1211 BEFORE_POTENTIAL_GC ();
1212 v1 = POP; 1143 v1 = POP;
1213 TOP = Faref (TOP, v1); 1144 TOP = Faref (TOP, v1);
1214 AFTER_POTENTIAL_GC ();
1215 NEXT; 1145 NEXT;
1216 } 1146 }
1217 1147
1218 CASE (Baset): 1148 CASE (Baset):
1219 { 1149 {
1220 Lisp_Object v1, v2; 1150 Lisp_Object v1, v2;
1221 BEFORE_POTENTIAL_GC ();
1222 v2 = POP; v1 = POP; 1151 v2 = POP; v1 = POP;
1223 TOP = Faset (TOP, v1, v2); 1152 TOP = Faset (TOP, v1, v2);
1224 AFTER_POTENTIAL_GC ();
1225 NEXT; 1153 NEXT;
1226 } 1154 }
1227 1155
1228 CASE (Bsymbol_value): 1156 CASE (Bsymbol_value):
1229 BEFORE_POTENTIAL_GC ();
1230 TOP = Fsymbol_value (TOP); 1157 TOP = Fsymbol_value (TOP);
1231 AFTER_POTENTIAL_GC ();
1232 NEXT; 1158 NEXT;
1233 1159
1234 CASE (Bsymbol_function): 1160 CASE (Bsymbol_function):
1235 BEFORE_POTENTIAL_GC ();
1236 TOP = Fsymbol_function (TOP); 1161 TOP = Fsymbol_function (TOP);
1237 AFTER_POTENTIAL_GC ();
1238 NEXT; 1162 NEXT;
1239 1163
1240 CASE (Bset): 1164 CASE (Bset):
1241 { 1165 {
1242 Lisp_Object v1; 1166 Lisp_Object v1;
1243 BEFORE_POTENTIAL_GC ();
1244 v1 = POP; 1167 v1 = POP;
1245 TOP = Fset (TOP, v1); 1168 TOP = Fset (TOP, v1);
1246 AFTER_POTENTIAL_GC ();
1247 NEXT; 1169 NEXT;
1248 } 1170 }
1249 1171
1250 CASE (Bfset): 1172 CASE (Bfset):
1251 { 1173 {
1252 Lisp_Object v1; 1174 Lisp_Object v1;
1253 BEFORE_POTENTIAL_GC ();
1254 v1 = POP; 1175 v1 = POP;
1255 TOP = Ffset (TOP, v1); 1176 TOP = Ffset (TOP, v1);
1256 AFTER_POTENTIAL_GC ();
1257 NEXT; 1177 NEXT;
1258 } 1178 }
1259 1179
1260 CASE (Bget): 1180 CASE (Bget):
1261 { 1181 {
1262 Lisp_Object v1; 1182 Lisp_Object v1;
1263 BEFORE_POTENTIAL_GC ();
1264 v1 = POP; 1183 v1 = POP;
1265 TOP = Fget (TOP, v1); 1184 TOP = Fget (TOP, v1);
1266 AFTER_POTENTIAL_GC ();
1267 NEXT; 1185 NEXT;
1268 } 1186 }
1269 1187
1270 CASE (Bsubstring): 1188 CASE (Bsubstring):
1271 { 1189 {
1272 Lisp_Object v1, v2; 1190 Lisp_Object v1, v2;
1273 BEFORE_POTENTIAL_GC ();
1274 v2 = POP; v1 = POP; 1191 v2 = POP; v1 = POP;
1275 TOP = Fsubstring (TOP, v1, v2); 1192 TOP = Fsubstring (TOP, v1, v2);
1276 AFTER_POTENTIAL_GC ();
1277 NEXT; 1193 NEXT;
1278 } 1194 }
1279 1195
1280 CASE (Bconcat2): 1196 CASE (Bconcat2):
1281 BEFORE_POTENTIAL_GC ();
1282 DISCARD (1); 1197 DISCARD (1);
1283 TOP = Fconcat (2, &TOP); 1198 TOP = Fconcat (2, &TOP);
1284 AFTER_POTENTIAL_GC ();
1285 NEXT; 1199 NEXT;
1286 1200
1287 CASE (Bconcat3): 1201 CASE (Bconcat3):
1288 BEFORE_POTENTIAL_GC ();
1289 DISCARD (2); 1202 DISCARD (2);
1290 TOP = Fconcat (3, &TOP); 1203 TOP = Fconcat (3, &TOP);
1291 AFTER_POTENTIAL_GC ();
1292 NEXT; 1204 NEXT;
1293 1205
1294 CASE (Bconcat4): 1206 CASE (Bconcat4):
1295 BEFORE_POTENTIAL_GC ();
1296 DISCARD (3); 1207 DISCARD (3);
1297 TOP = Fconcat (4, &TOP); 1208 TOP = Fconcat (4, &TOP);
1298 AFTER_POTENTIAL_GC ();
1299 NEXT; 1209 NEXT;
1300 1210
1301 CASE (BconcatN): 1211 CASE (BconcatN):
1302 op = FETCH; 1212 op = FETCH;
1303 BEFORE_POTENTIAL_GC ();
1304 DISCARD (op - 1); 1213 DISCARD (op - 1);
1305 TOP = Fconcat (op, &TOP); 1214 TOP = Fconcat (op, &TOP);
1306 AFTER_POTENTIAL_GC ();
1307 NEXT; 1215 NEXT;
1308 1216
1309 CASE (Bsub1): 1217 CASE (Bsub1):
@@ -1317,9 +1225,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1317 } 1225 }
1318 else 1226 else
1319 { 1227 {
1320 BEFORE_POTENTIAL_GC ();
1321 TOP = Fsub1 (v1); 1228 TOP = Fsub1 (v1);
1322 AFTER_POTENTIAL_GC ();
1323 } 1229 }
1324 NEXT; 1230 NEXT;
1325 } 1231 }
@@ -1335,9 +1241,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1335 } 1241 }
1336 else 1242 else
1337 { 1243 {
1338 BEFORE_POTENTIAL_GC ();
1339 TOP = Fadd1 (v1); 1244 TOP = Fadd1 (v1);
1340 AFTER_POTENTIAL_GC ();
1341 } 1245 }
1342 NEXT; 1246 NEXT;
1343 } 1247 }
@@ -1345,11 +1249,9 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1345 CASE (Beqlsign): 1249 CASE (Beqlsign):
1346 { 1250 {
1347 Lisp_Object v1, v2; 1251 Lisp_Object v1, v2;
1348 BEFORE_POTENTIAL_GC ();
1349 v2 = POP; v1 = TOP; 1252 v2 = POP; v1 = TOP;
1350 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1); 1253 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1);
1351 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2); 1254 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2);
1352 AFTER_POTENTIAL_GC ();
1353 if (FLOATP (v1) || FLOATP (v2)) 1255 if (FLOATP (v1) || FLOATP (v2))
1354 { 1256 {
1355 double f1, f2; 1257 double f1, f2;
@@ -1366,48 +1268,38 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1366 CASE (Bgtr): 1268 CASE (Bgtr):
1367 { 1269 {
1368 Lisp_Object v1; 1270 Lisp_Object v1;
1369 BEFORE_POTENTIAL_GC ();
1370 v1 = POP; 1271 v1 = POP;
1371 TOP = arithcompare (TOP, v1, ARITH_GRTR); 1272 TOP = arithcompare (TOP, v1, ARITH_GRTR);
1372 AFTER_POTENTIAL_GC ();
1373 NEXT; 1273 NEXT;
1374 } 1274 }
1375 1275
1376 CASE (Blss): 1276 CASE (Blss):
1377 { 1277 {
1378 Lisp_Object v1; 1278 Lisp_Object v1;
1379 BEFORE_POTENTIAL_GC ();
1380 v1 = POP; 1279 v1 = POP;
1381 TOP = arithcompare (TOP, v1, ARITH_LESS); 1280 TOP = arithcompare (TOP, v1, ARITH_LESS);
1382 AFTER_POTENTIAL_GC ();
1383 NEXT; 1281 NEXT;
1384 } 1282 }
1385 1283
1386 CASE (Bleq): 1284 CASE (Bleq):
1387 { 1285 {
1388 Lisp_Object v1; 1286 Lisp_Object v1;
1389 BEFORE_POTENTIAL_GC ();
1390 v1 = POP; 1287 v1 = POP;
1391 TOP = arithcompare (TOP, v1, ARITH_LESS_OR_EQUAL); 1288 TOP = arithcompare (TOP, v1, ARITH_LESS_OR_EQUAL);
1392 AFTER_POTENTIAL_GC ();
1393 NEXT; 1289 NEXT;
1394 } 1290 }
1395 1291
1396 CASE (Bgeq): 1292 CASE (Bgeq):
1397 { 1293 {
1398 Lisp_Object v1; 1294 Lisp_Object v1;
1399 BEFORE_POTENTIAL_GC ();
1400 v1 = POP; 1295 v1 = POP;
1401 TOP = arithcompare (TOP, v1, ARITH_GRTR_OR_EQUAL); 1296 TOP = arithcompare (TOP, v1, ARITH_GRTR_OR_EQUAL);
1402 AFTER_POTENTIAL_GC ();
1403 NEXT; 1297 NEXT;
1404 } 1298 }
1405 1299
1406 CASE (Bdiff): 1300 CASE (Bdiff):
1407 BEFORE_POTENTIAL_GC ();
1408 DISCARD (1); 1301 DISCARD (1);
1409 TOP = Fminus (2, &TOP); 1302 TOP = Fminus (2, &TOP);
1410 AFTER_POTENTIAL_GC ();
1411 NEXT; 1303 NEXT;
1412 1304
1413 CASE (Bnegate): 1305 CASE (Bnegate):
@@ -1421,55 +1313,41 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1421 } 1313 }
1422 else 1314 else
1423 { 1315 {
1424 BEFORE_POTENTIAL_GC ();
1425 TOP = Fminus (1, &TOP); 1316 TOP = Fminus (1, &TOP);
1426 AFTER_POTENTIAL_GC ();
1427 } 1317 }
1428 NEXT; 1318 NEXT;
1429 } 1319 }
1430 1320
1431 CASE (Bplus): 1321 CASE (Bplus):
1432 BEFORE_POTENTIAL_GC ();
1433 DISCARD (1); 1322 DISCARD (1);
1434 TOP = Fplus (2, &TOP); 1323 TOP = Fplus (2, &TOP);
1435 AFTER_POTENTIAL_GC ();
1436 NEXT; 1324 NEXT;
1437 1325
1438 CASE (Bmax): 1326 CASE (Bmax):
1439 BEFORE_POTENTIAL_GC ();
1440 DISCARD (1); 1327 DISCARD (1);
1441 TOP = Fmax (2, &TOP); 1328 TOP = Fmax (2, &TOP);
1442 AFTER_POTENTIAL_GC ();
1443 NEXT; 1329 NEXT;
1444 1330
1445 CASE (Bmin): 1331 CASE (Bmin):
1446 BEFORE_POTENTIAL_GC ();
1447 DISCARD (1); 1332 DISCARD (1);
1448 TOP = Fmin (2, &TOP); 1333 TOP = Fmin (2, &TOP);
1449 AFTER_POTENTIAL_GC ();
1450 NEXT; 1334 NEXT;
1451 1335
1452 CASE (Bmult): 1336 CASE (Bmult):
1453 BEFORE_POTENTIAL_GC ();
1454 DISCARD (1); 1337 DISCARD (1);
1455 TOP = Ftimes (2, &TOP); 1338 TOP = Ftimes (2, &TOP);
1456 AFTER_POTENTIAL_GC ();
1457 NEXT; 1339 NEXT;
1458 1340
1459 CASE (Bquo): 1341 CASE (Bquo):
1460 BEFORE_POTENTIAL_GC ();
1461 DISCARD (1); 1342 DISCARD (1);
1462 TOP = Fquo (2, &TOP); 1343 TOP = Fquo (2, &TOP);
1463 AFTER_POTENTIAL_GC ();
1464 NEXT; 1344 NEXT;
1465 1345
1466 CASE (Brem): 1346 CASE (Brem):
1467 { 1347 {
1468 Lisp_Object v1; 1348 Lisp_Object v1;
1469 BEFORE_POTENTIAL_GC ();
1470 v1 = POP; 1349 v1 = POP;
1471 TOP = Frem (TOP, v1); 1350 TOP = Frem (TOP, v1);
1472 AFTER_POTENTIAL_GC ();
1473 NEXT; 1351 NEXT;
1474 } 1352 }
1475 1353
@@ -1482,23 +1360,17 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1482 } 1360 }
1483 1361
1484 CASE (Bgoto_char): 1362 CASE (Bgoto_char):
1485 BEFORE_POTENTIAL_GC ();
1486 TOP = Fgoto_char (TOP); 1363 TOP = Fgoto_char (TOP);
1487 AFTER_POTENTIAL_GC ();
1488 NEXT; 1364 NEXT;
1489 1365
1490 CASE (Binsert): 1366 CASE (Binsert):
1491 BEFORE_POTENTIAL_GC ();
1492 TOP = Finsert (1, &TOP); 1367 TOP = Finsert (1, &TOP);
1493 AFTER_POTENTIAL_GC ();
1494 NEXT; 1368 NEXT;
1495 1369
1496 CASE (BinsertN): 1370 CASE (BinsertN):
1497 op = FETCH; 1371 op = FETCH;
1498 BEFORE_POTENTIAL_GC ();
1499 DISCARD (op - 1); 1372 DISCARD (op - 1);
1500 TOP = Finsert (op, &TOP); 1373 TOP = Finsert (op, &TOP);
1501 AFTER_POTENTIAL_GC ();
1502 NEXT; 1374 NEXT;
1503 1375
1504 CASE (Bpoint_max): 1376 CASE (Bpoint_max):
@@ -1518,17 +1390,13 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1518 } 1390 }
1519 1391
1520 CASE (Bchar_after): 1392 CASE (Bchar_after):
1521 BEFORE_POTENTIAL_GC ();
1522 TOP = Fchar_after (TOP); 1393 TOP = Fchar_after (TOP);
1523 AFTER_POTENTIAL_GC ();
1524 NEXT; 1394 NEXT;
1525 1395
1526 CASE (Bfollowing_char): 1396 CASE (Bfollowing_char):
1527 { 1397 {
1528 Lisp_Object v1; 1398 Lisp_Object v1;
1529 BEFORE_POTENTIAL_GC ();
1530 v1 = Ffollowing_char (); 1399 v1 = Ffollowing_char ();
1531 AFTER_POTENTIAL_GC ();
1532 PUSH (v1); 1400 PUSH (v1);
1533 NEXT; 1401 NEXT;
1534 } 1402 }
@@ -1536,9 +1404,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1536 CASE (Bpreceding_char): 1404 CASE (Bpreceding_char):
1537 { 1405 {
1538 Lisp_Object v1; 1406 Lisp_Object v1;
1539 BEFORE_POTENTIAL_GC ();
1540 v1 = Fprevious_char (); 1407 v1 = Fprevious_char ();
1541 AFTER_POTENTIAL_GC ();
1542 PUSH (v1); 1408 PUSH (v1);
1543 NEXT; 1409 NEXT;
1544 } 1410 }
@@ -1546,17 +1412,13 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1546 CASE (Bcurrent_column): 1412 CASE (Bcurrent_column):
1547 { 1413 {
1548 Lisp_Object v1; 1414 Lisp_Object v1;
1549 BEFORE_POTENTIAL_GC ();
1550 XSETFASTINT (v1, current_column ()); 1415 XSETFASTINT (v1, current_column ());
1551 AFTER_POTENTIAL_GC ();
1552 PUSH (v1); 1416 PUSH (v1);
1553 NEXT; 1417 NEXT;
1554 } 1418 }
1555 1419
1556 CASE (Bindent_to): 1420 CASE (Bindent_to):
1557 BEFORE_POTENTIAL_GC ();
1558 TOP = Findent_to (TOP, Qnil); 1421 TOP = Findent_to (TOP, Qnil);
1559 AFTER_POTENTIAL_GC ();
1560 NEXT; 1422 NEXT;
1561 1423
1562 CASE (Beolp): 1424 CASE (Beolp):
@@ -1580,62 +1442,46 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1580 NEXT; 1442 NEXT;
1581 1443
1582 CASE (Bset_buffer): 1444 CASE (Bset_buffer):
1583 BEFORE_POTENTIAL_GC ();
1584 TOP = Fset_buffer (TOP); 1445 TOP = Fset_buffer (TOP);
1585 AFTER_POTENTIAL_GC ();
1586 NEXT; 1446 NEXT;
1587 1447
1588 CASE (Binteractive_p): /* Obsolete since 24.1. */ 1448 CASE (Binteractive_p): /* Obsolete since 24.1. */
1589 BEFORE_POTENTIAL_GC ();
1590 PUSH (call0 (intern ("interactive-p"))); 1449 PUSH (call0 (intern ("interactive-p")));
1591 AFTER_POTENTIAL_GC ();
1592 NEXT; 1450 NEXT;
1593 1451
1594 CASE (Bforward_char): 1452 CASE (Bforward_char):
1595 BEFORE_POTENTIAL_GC ();
1596 TOP = Fforward_char (TOP); 1453 TOP = Fforward_char (TOP);
1597 AFTER_POTENTIAL_GC ();
1598 NEXT; 1454 NEXT;
1599 1455
1600 CASE (Bforward_word): 1456 CASE (Bforward_word):
1601 BEFORE_POTENTIAL_GC ();
1602 TOP = Fforward_word (TOP); 1457 TOP = Fforward_word (TOP);
1603 AFTER_POTENTIAL_GC ();
1604 NEXT; 1458 NEXT;
1605 1459
1606 CASE (Bskip_chars_forward): 1460 CASE (Bskip_chars_forward):
1607 { 1461 {
1608 Lisp_Object v1; 1462 Lisp_Object v1;
1609 BEFORE_POTENTIAL_GC ();
1610 v1 = POP; 1463 v1 = POP;
1611 TOP = Fskip_chars_forward (TOP, v1); 1464 TOP = Fskip_chars_forward (TOP, v1);
1612 AFTER_POTENTIAL_GC ();
1613 NEXT; 1465 NEXT;
1614 } 1466 }
1615 1467
1616 CASE (Bskip_chars_backward): 1468 CASE (Bskip_chars_backward):
1617 { 1469 {
1618 Lisp_Object v1; 1470 Lisp_Object v1;
1619 BEFORE_POTENTIAL_GC ();
1620 v1 = POP; 1471 v1 = POP;
1621 TOP = Fskip_chars_backward (TOP, v1); 1472 TOP = Fskip_chars_backward (TOP, v1);
1622 AFTER_POTENTIAL_GC ();
1623 NEXT; 1473 NEXT;
1624 } 1474 }
1625 1475
1626 CASE (Bforward_line): 1476 CASE (Bforward_line):
1627 BEFORE_POTENTIAL_GC ();
1628 TOP = Fforward_line (TOP); 1477 TOP = Fforward_line (TOP);
1629 AFTER_POTENTIAL_GC ();
1630 NEXT; 1478 NEXT;
1631 1479
1632 CASE (Bchar_syntax): 1480 CASE (Bchar_syntax):
1633 { 1481 {
1634 int c; 1482 int c;
1635 1483
1636 BEFORE_POTENTIAL_GC ();
1637 CHECK_CHARACTER (TOP); 1484 CHECK_CHARACTER (TOP);
1638 AFTER_POTENTIAL_GC ();
1639 c = XFASTINT (TOP); 1485 c = XFASTINT (TOP);
1640 if (NILP (BVAR (current_buffer, enable_multibyte_characters))) 1486 if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
1641 MAKE_CHAR_MULTIBYTE (c); 1487 MAKE_CHAR_MULTIBYTE (c);
@@ -1646,97 +1492,73 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1646 CASE (Bbuffer_substring): 1492 CASE (Bbuffer_substring):
1647 { 1493 {
1648 Lisp_Object v1; 1494 Lisp_Object v1;
1649 BEFORE_POTENTIAL_GC ();
1650 v1 = POP; 1495 v1 = POP;
1651 TOP = Fbuffer_substring (TOP, v1); 1496 TOP = Fbuffer_substring (TOP, v1);
1652 AFTER_POTENTIAL_GC ();
1653 NEXT; 1497 NEXT;
1654 } 1498 }
1655 1499
1656 CASE (Bdelete_region): 1500 CASE (Bdelete_region):
1657 { 1501 {
1658 Lisp_Object v1; 1502 Lisp_Object v1;
1659 BEFORE_POTENTIAL_GC ();
1660 v1 = POP; 1503 v1 = POP;
1661 TOP = Fdelete_region (TOP, v1); 1504 TOP = Fdelete_region (TOP, v1);
1662 AFTER_POTENTIAL_GC ();
1663 NEXT; 1505 NEXT;
1664 } 1506 }
1665 1507
1666 CASE (Bnarrow_to_region): 1508 CASE (Bnarrow_to_region):
1667 { 1509 {
1668 Lisp_Object v1; 1510 Lisp_Object v1;
1669 BEFORE_POTENTIAL_GC ();
1670 v1 = POP; 1511 v1 = POP;
1671 TOP = Fnarrow_to_region (TOP, v1); 1512 TOP = Fnarrow_to_region (TOP, v1);
1672 AFTER_POTENTIAL_GC ();
1673 NEXT; 1513 NEXT;
1674 } 1514 }
1675 1515
1676 CASE (Bwiden): 1516 CASE (Bwiden):
1677 BEFORE_POTENTIAL_GC ();
1678 PUSH (Fwiden ()); 1517 PUSH (Fwiden ());
1679 AFTER_POTENTIAL_GC ();
1680 NEXT; 1518 NEXT;
1681 1519
1682 CASE (Bend_of_line): 1520 CASE (Bend_of_line):
1683 BEFORE_POTENTIAL_GC ();
1684 TOP = Fend_of_line (TOP); 1521 TOP = Fend_of_line (TOP);
1685 AFTER_POTENTIAL_GC ();
1686 NEXT; 1522 NEXT;
1687 1523
1688 CASE (Bset_marker): 1524 CASE (Bset_marker):
1689 { 1525 {
1690 Lisp_Object v1, v2; 1526 Lisp_Object v1, v2;
1691 BEFORE_POTENTIAL_GC ();
1692 v1 = POP; 1527 v1 = POP;
1693 v2 = POP; 1528 v2 = POP;
1694 TOP = Fset_marker (TOP, v2, v1); 1529 TOP = Fset_marker (TOP, v2, v1);
1695 AFTER_POTENTIAL_GC ();
1696 NEXT; 1530 NEXT;
1697 } 1531 }
1698 1532
1699 CASE (Bmatch_beginning): 1533 CASE (Bmatch_beginning):
1700 BEFORE_POTENTIAL_GC ();
1701 TOP = Fmatch_beginning (TOP); 1534 TOP = Fmatch_beginning (TOP);
1702 AFTER_POTENTIAL_GC ();
1703 NEXT; 1535 NEXT;
1704 1536
1705 CASE (Bmatch_end): 1537 CASE (Bmatch_end):
1706 BEFORE_POTENTIAL_GC ();
1707 TOP = Fmatch_end (TOP); 1538 TOP = Fmatch_end (TOP);
1708 AFTER_POTENTIAL_GC ();
1709 NEXT; 1539 NEXT;
1710 1540
1711 CASE (Bupcase): 1541 CASE (Bupcase):
1712 BEFORE_POTENTIAL_GC ();
1713 TOP = Fupcase (TOP); 1542 TOP = Fupcase (TOP);
1714 AFTER_POTENTIAL_GC ();
1715 NEXT; 1543 NEXT;
1716 1544
1717 CASE (Bdowncase): 1545 CASE (Bdowncase):
1718 BEFORE_POTENTIAL_GC ();
1719 TOP = Fdowncase (TOP); 1546 TOP = Fdowncase (TOP);
1720 AFTER_POTENTIAL_GC ();
1721 NEXT; 1547 NEXT;
1722 1548
1723 CASE (Bstringeqlsign): 1549 CASE (Bstringeqlsign):
1724 { 1550 {
1725 Lisp_Object v1; 1551 Lisp_Object v1;
1726 BEFORE_POTENTIAL_GC ();
1727 v1 = POP; 1552 v1 = POP;
1728 TOP = Fstring_equal (TOP, v1); 1553 TOP = Fstring_equal (TOP, v1);
1729 AFTER_POTENTIAL_GC ();
1730 NEXT; 1554 NEXT;
1731 } 1555 }
1732 1556
1733 CASE (Bstringlss): 1557 CASE (Bstringlss):
1734 { 1558 {
1735 Lisp_Object v1; 1559 Lisp_Object v1;
1736 BEFORE_POTENTIAL_GC ();
1737 v1 = POP; 1560 v1 = POP;
1738 TOP = Fstring_lessp (TOP, v1); 1561 TOP = Fstring_lessp (TOP, v1);
1739 AFTER_POTENTIAL_GC ();
1740 NEXT; 1562 NEXT;
1741 } 1563 }
1742 1564
@@ -1751,10 +1573,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1751 CASE (Bnthcdr): 1573 CASE (Bnthcdr):
1752 { 1574 {
1753 Lisp_Object v1; 1575 Lisp_Object v1;
1754 BEFORE_POTENTIAL_GC ();
1755 v1 = POP; 1576 v1 = POP;
1756 TOP = Fnthcdr (TOP, v1); 1577 TOP = Fnthcdr (TOP, v1);
1757 AFTER_POTENTIAL_GC ();
1758 NEXT; 1578 NEXT;
1759 } 1579 }
1760 1580
@@ -1765,11 +1585,9 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1765 { 1585 {
1766 /* Exchange args and then do nth. */ 1586 /* Exchange args and then do nth. */
1767 EMACS_INT n; 1587 EMACS_INT n;
1768 BEFORE_POTENTIAL_GC ();
1769 v2 = POP; 1588 v2 = POP;
1770 v1 = TOP; 1589 v1 = TOP;
1771 CHECK_NUMBER (v2); 1590 CHECK_NUMBER (v2);
1772 AFTER_POTENTIAL_GC ();
1773 n = XINT (v2); 1591 n = XINT (v2);
1774 immediate_quit = 1; 1592 immediate_quit = 1;
1775 while (--n >= 0 && CONSP (v1)) 1593 while (--n >= 0 && CONSP (v1))
@@ -1779,10 +1597,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1779 } 1597 }
1780 else 1598 else
1781 { 1599 {
1782 BEFORE_POTENTIAL_GC ();
1783 v1 = POP; 1600 v1 = POP;
1784 TOP = Felt (TOP, v1); 1601 TOP = Felt (TOP, v1);
1785 AFTER_POTENTIAL_GC ();
1786 } 1602 }
1787 NEXT; 1603 NEXT;
1788 } 1604 }
@@ -1790,46 +1606,36 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1790 CASE (Bmember): 1606 CASE (Bmember):
1791 { 1607 {
1792 Lisp_Object v1; 1608 Lisp_Object v1;
1793 BEFORE_POTENTIAL_GC ();
1794 v1 = POP; 1609 v1 = POP;
1795 TOP = Fmember (TOP, v1); 1610 TOP = Fmember (TOP, v1);
1796 AFTER_POTENTIAL_GC ();
1797 NEXT; 1611 NEXT;
1798 } 1612 }
1799 1613
1800 CASE (Bassq): 1614 CASE (Bassq):
1801 { 1615 {
1802 Lisp_Object v1; 1616 Lisp_Object v1;
1803 BEFORE_POTENTIAL_GC ();
1804 v1 = POP; 1617 v1 = POP;
1805 TOP = Fassq (TOP, v1); 1618 TOP = Fassq (TOP, v1);
1806 AFTER_POTENTIAL_GC ();
1807 NEXT; 1619 NEXT;
1808 } 1620 }
1809 1621
1810 CASE (Bnreverse): 1622 CASE (Bnreverse):
1811 BEFORE_POTENTIAL_GC ();
1812 TOP = Fnreverse (TOP); 1623 TOP = Fnreverse (TOP);
1813 AFTER_POTENTIAL_GC ();
1814 NEXT; 1624 NEXT;
1815 1625
1816 CASE (Bsetcar): 1626 CASE (Bsetcar):
1817 { 1627 {
1818 Lisp_Object v1; 1628 Lisp_Object v1;
1819 BEFORE_POTENTIAL_GC ();
1820 v1 = POP; 1629 v1 = POP;
1821 TOP = Fsetcar (TOP, v1); 1630 TOP = Fsetcar (TOP, v1);
1822 AFTER_POTENTIAL_GC ();
1823 NEXT; 1631 NEXT;
1824 } 1632 }
1825 1633
1826 CASE (Bsetcdr): 1634 CASE (Bsetcdr):
1827 { 1635 {
1828 Lisp_Object v1; 1636 Lisp_Object v1;
1829 BEFORE_POTENTIAL_GC ();
1830 v1 = POP; 1637 v1 = POP;
1831 TOP = Fsetcdr (TOP, v1); 1638 TOP = Fsetcdr (TOP, v1);
1832 AFTER_POTENTIAL_GC ();
1833 NEXT; 1639 NEXT;
1834 } 1640 }
1835 1641
@@ -1850,10 +1656,8 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1850 } 1656 }
1851 1657
1852 CASE (Bnconc): 1658 CASE (Bnconc):
1853 BEFORE_POTENTIAL_GC ();
1854 DISCARD (1); 1659 DISCARD (1);
1855 TOP = Fnconc (2, &TOP); 1660 TOP = Fnconc (2, &TOP);
1856 AFTER_POTENTIAL_GC ();
1857 NEXT; 1661 NEXT;
1858 1662
1859 CASE (Bnumberp): 1663 CASE (Bnumberp):
@@ -1870,14 +1674,10 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1870 interpreter. */ 1674 interpreter. */
1871 1675
1872 case Bset_mark: 1676 case Bset_mark:
1873 BEFORE_POTENTIAL_GC ();
1874 error ("set-mark is an obsolete bytecode"); 1677 error ("set-mark is an obsolete bytecode");
1875 AFTER_POTENTIAL_GC ();
1876 break; 1678 break;
1877 case Bscan_buffer: 1679 case Bscan_buffer:
1878 BEFORE_POTENTIAL_GC ();
1879 error ("scan-buffer is an obsolete bytecode"); 1680 error ("scan-buffer is an obsolete bytecode");
1880 AFTER_POTENTIAL_GC ();
1881 break; 1681 break;
1882#endif 1682#endif
1883 1683