# HG changeset patch # User Gerd Moellmann # Date 985773711 0 # Node ID d7378777b9854f75eabc5689770a1faa4a0b8853 # Parent f023c8a482ec6cd3a593a11ef44a8c4e9e080a1d (BYTE_CODE_QUIT): New macro. (Fbyte_code): Use BYTE_CODE_QUIT instead of QUIT. diff -r f023c8a482ec -r d7378777b985 src/bytecode.c --- a/src/bytecode.c Wed Mar 28 09:28:15 2001 +0000 +++ b/src/bytecode.c Wed Mar 28 10:01:51 2001 +0000 @@ -1,5 +1,6 @@ /* Execution of byte code produced by bytecomp.el. - Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000 Free Software Foundation, Inc. + Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001 + Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -396,6 +397,19 @@ #endif /* not BYTE_CODE_SAFE */ +/* A version of the QUIT macro which makes sure that the stack top is + set before signaling `quit'. */ + +#define BYTE_CODE_QUIT \ + do { \ + if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \ + { \ + Vquit_flag = Qnil; \ + BEFORE_POTENTIAL_GC (); \ + Fsignal (Qquit, Qnil); \ + } \ + } while (0) + DEFUN ("byte-code", Fbyte_code, Sbyte_code, 3, 3, 0, "Function used internally in byte-compiled code.\n\ @@ -529,7 +543,7 @@ op = FETCH2; if (NILP (POP)) { - QUIT; + BYTE_CODE_QUIT; CHECK_RANGE (op); stack.pc = stack.byte_string_start + op; } @@ -735,7 +749,7 @@ case Bgoto: MAYBE_GC (); - QUIT; + BYTE_CODE_QUIT; op = FETCH2; /* pc = FETCH2 loses since FETCH2 contains pc++ */ CHECK_RANGE (op); stack.pc = stack.byte_string_start + op; @@ -746,7 +760,7 @@ op = FETCH2; if (!NILP (POP)) { - QUIT; + BYTE_CODE_QUIT; CHECK_RANGE (op); stack.pc = stack.byte_string_start + op; } @@ -757,7 +771,7 @@ op = FETCH2; if (NILP (TOP)) { - QUIT; + BYTE_CODE_QUIT; CHECK_RANGE (op); stack.pc = stack.byte_string_start + op; } @@ -769,7 +783,7 @@ op = FETCH2; if (!NILP (TOP)) { - QUIT; + BYTE_CODE_QUIT; CHECK_RANGE (op); stack.pc = stack.byte_string_start + op; } @@ -778,7 +792,7 @@ case BRgoto: MAYBE_GC (); - QUIT; + BYTE_CODE_QUIT; stack.pc += (int) *stack.pc - 127; break; @@ -786,7 +800,7 @@ MAYBE_GC (); if (NILP (POP)) { - QUIT; + BYTE_CODE_QUIT; stack.pc += (int) *stack.pc - 128; } stack.pc++; @@ -796,7 +810,7 @@ MAYBE_GC (); if (!NILP (POP)) { - QUIT; + BYTE_CODE_QUIT; stack.pc += (int) *stack.pc - 128; } stack.pc++; @@ -807,7 +821,7 @@ op = *stack.pc++; if (NILP (TOP)) { - QUIT; + BYTE_CODE_QUIT; stack.pc += op - 128; } else DISCARD (1); @@ -818,7 +832,7 @@ op = *stack.pc++; if (!NILP (TOP)) { - QUIT; + BYTE_CODE_QUIT; stack.pc += op - 128; } else DISCARD (1);