From 9a36861ef6ff812684980a3d52a6bccc8ff4e727 Mon Sep 17 00:00:00 2001 From: rocky Date: Mon, 13 Jul 2020 11:49:02 -0400 Subject: [PATCH] Reduced bytecode offset update This reduces bytecode-offset updates to happen only before a call. --- src/bytecode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bytecode.c b/src/bytecode.c index 8e3cddf7851..4ea3cbfb12b 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -434,7 +434,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, /* NEXT is invoked at the end of an instruction to go to the next instruction. It is either a computed goto, or a plain break. */ -#define NEXT UPDATE_OFFSET; goto *(targets[op = FETCH]) +#define NEXT goto *(targets[op = FETCH]) /* FIRST is like NEXT, but is only used at the start of the interpreter body. In the switch-based interpreter it is the switch, so the threaded definition must include a semicolon. */ @@ -622,6 +622,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, op -= Bcall; docall: { + UPDATE_OFFSET; DISCARD (op); #ifdef BYTE_CODE_METER if (byte_metering_on && SYMBOLP (TOP)) -- 2.39.5