From: Gerd Moellmann Date: Wed, 26 Jan 2000 14:47:42 +0000 (+0000) Subject: (Fbyte_code): Use {BEFORE,AFTER}_POTENTIAL_GC where X-Git-Tag: emacs-pretest-21.0.90~5250 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f5941bf8c0c13e150f67f26094287381c34c7217;p=emacs.git (Fbyte_code): Use {BEFORE,AFTER}_POTENTIAL_GC where an error may be signalled. --- diff --git a/src/ChangeLog b/src/ChangeLog index e2428088cff..c2343b5a593 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2000-01-26 Dave Love + + * bytecode.c (Fbyte_code): Use {BEFORE,AFTER}_POTENTIAL_GC where + an error may be signalled. + 2000-01-26 Gerd Moellmann * s/irix6-5.h [__GNUC__ && __GNUC_MINOR__ >= 95]: Undef diff --git a/src/bytecode.c b/src/bytecode.c index 084dfef6fb5..52a0dba31d5 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -505,7 +505,11 @@ If the third argument is incorrect, Emacs may crash.") else if (NILP (v1)) TOP = Qnil; else - Fcar (wrong_type_argument (Qlistp, v1)); + { + BEFORE_POTENTIAL_GC (); + Fcar (wrong_type_argument (Qlistp, v1)); + AFTER_POTENTIAL_GC (); + } break; } @@ -534,7 +538,11 @@ If the third argument is incorrect, Emacs may crash.") else if (NILP (v1)) TOP = Qnil; else - Fcdr (wrong_type_argument (Qlistp, v1)); + { + BEFORE_POTENTIAL_GC (); + Fcdr (wrong_type_argument (Qlistp, v1)); + AFTER_POTENTIAL_GC (); + } break; } @@ -826,7 +834,9 @@ If the third argument is incorrect, Emacs may crash.") Lisp_Object v1, v2; v1 = POP; v2 = TOP; + BEFORE_POTENTIAL_GC (); CHECK_NUMBER (v2, 0); + AFTER_POTENTIAL_GC (); op = XINT (v2); immediate_quit = 1; while (--op >= 0) @@ -836,7 +846,9 @@ If the third argument is incorrect, Emacs may crash.") else if (!NILP (v1)) { immediate_quit = 0; + BEFORE_POTENTIAL_GC (); v1 = wrong_type_argument (Qlistp, v1); + AFTER_POTENTIAL_GC (); immediate_quit = 1; op++; } @@ -847,7 +859,11 @@ If the third argument is incorrect, Emacs may crash.") else if (NILP (v1)) TOP = Qnil; else - Fcar (wrong_type_argument (Qlistp, v1)); + { + BEFORE_POTENTIAL_GC (); + Fcar (wrong_type_argument (Qlistp, v1)); + AFTER_POTENTIAL_GC (); + } break; } @@ -1022,8 +1038,10 @@ If the third argument is incorrect, Emacs may crash.") { Lisp_Object v1, v2; v2 = POP; v1 = TOP; + BEFORE_POTENTIAL_GC (); CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1, 0); CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2, 0); + AFTER_POTENTIAL_GC (); #ifdef LISP_FLOAT_TYPE if (FLOATP (v1) || FLOATP (v2)) { @@ -1270,7 +1288,9 @@ If the third argument is incorrect, Emacs may crash.") break; case Bchar_syntax: + BEFORE_POTENTIAL_GC (); CHECK_NUMBER (TOP, 0); + AFTER_POTENTIAL_GC (); XSETFASTINT (TOP, syntax_code_spec[(int) SYNTAX (XINT (TOP))]); break; @@ -1381,7 +1401,9 @@ If the third argument is incorrect, Emacs may crash.") /* Exchange args and then do nth. */ v2 = POP; v1 = TOP; + BEFORE_POTENTIAL_GC (); CHECK_NUMBER (v2, 0); + AFTER_POTENTIAL_GC (); op = XINT (v2); immediate_quit = 1; while (--op >= 0) @@ -1391,7 +1413,9 @@ If the third argument is incorrect, Emacs may crash.") else if (!NILP (v1)) { immediate_quit = 0; + BEFORE_POTENTIAL_GC (); v1 = wrong_type_argument (Qlistp, v1); + AFTER_POTENTIAL_GC (); immediate_quit = 1; op++; } @@ -1402,7 +1426,11 @@ If the third argument is incorrect, Emacs may crash.") else if (NILP (v1)) TOP = Qnil; else - Fcar (wrong_type_argument (Qlistp, v1)); + { + BEFORE_POTENTIAL_GC (); + Fcar (wrong_type_argument (Qlistp, v1)); + AFTER_POTENTIAL_GC (); + } } else { @@ -1485,10 +1513,14 @@ If the third argument is incorrect, Emacs may crash.") #ifdef BYTE_CODE_SAFE case Bset_mark: + BEFORE_POTENTIAL_GC (); error ("set-mark is an obsolete bytecode"); + AFTER_POTENTIAL_GC (); break; case Bscan_buffer: + BEFORE_POTENTIAL_GC (); error ("scan-buffer is an obsolete bytecode"); + AFTER_POTENTIAL_GC (); break; #endif @@ -1499,9 +1531,17 @@ If the third argument is incorrect, Emacs may crash.") default: #ifdef BYTE_CODE_SAFE if (op < Bconstant) - error ("unknown bytecode %d (byte compiler bug)", op); + { + BEFORE_POTENTIAL_GC (); + error ("unknown bytecode %d (byte compiler bug)", op); + AFTER_POTENTIAL_GC (); + } if ((op -= Bconstant) >= const_length) - error ("no constant number %d (byte compiler bug)", op); + { + BEFORE_POTENTIAL_GC (); + error ("no constant number %d (byte compiler bug)", op); + AFTER_POTENTIAL_GC (); + } PUSH (vectorp[op]); #else PUSH (vectorp[op - Bconstant]);